作者:___墨浔 | 来源:互联网 | 2023-10-12 12:36
篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何遍历STL映射(查找所有可能的对)相关的知识,希望对你有一定的参考价值。
如何遍历STL映射以面对所有元素。换句话说,我想找到所有可能的对。我想要一个有效的算法(复杂度)。
如果具有STL向量,则算法很简单。
vector vInt;
vector > vPair;
for(int i = 0; i for(int j = i + 1; j vPair.push_back(make_pair(vInt[i], vInt[j]));
}
}
但是,如果您有像算法一样的STL映射?
Obs:我希望所有可能的组合都是map的值(不是键)
map map;
vector > vPair;
???
我曾考虑过在STL向量中转换为STL映射,但是我会只使用STL映射的方法
答案
“我希望所有可能的组合值是地图的值(不是键)”
我不确定您想要什么,但是如果要完全按照示例中对向量所做的操作,在地图的“值”上进行>
您可以按照以下步骤进行操作:
std::map map;
std::map::iterator i,j,end=m.end();
std::vector > vpair;
end--;
for(i=m.begin();i!=end;++i)
{
j=i;
j++;
for(;j!=m.end();++j)
vpair.push_back(std::make_pair(i->second,j->second));
}
另一答案
非常简单,地图像矢量一样具有开始和结束迭代器,因此您可以执行此操作。
另一答案
同时使用begin()
和end()
来迭代vector
和map
的所有元素。
另一答案
我喜欢这种方法。
另一答案
您可以使用j = std::next(i)
来实现j = i + 1
,然后代码与矢量例几乎相同: