如何迭代 STL map 以应对所有元素。换句话说,我想找到所有可能的对。我想要一个高效的算法(复杂性)。
如果有一个STL vector ,算法就简单了。
vector<int> vInt;
vector<pair<int, int> > vPair;
for(int i = 0; i < vInt.size(); i++) {
for(int j = i + 1; j < vInt.size(); j++) {
vPair.push_back(make_pair(vInt[i], vInt[j]));
}
}
但是,如果你有像算法一样的STL图呢?
Obs:我想要所有可能的组合 map 的值(不是键)
map<int, int> map;
vector<pair<int, int> > vPair;
???
我想在 STL vector 中转换为 STL 映射,但是我会采用仅使用 STL 映射的方法
最佳答案
“我想要所有可能的组合值的映射(不是键)”
我不确定你想要什么,但如果你想完全按照你在你的例子中为 vector 所做的那样,在 map 的“值”上
你可以像下面那样做:
std::map<int, int> map;
std::map<int,int>::iterator i,j,end=m.end();
std::vector<std::pair<int,int> > 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));
}
关于c++ - 如何遍历 STL 映射(找到所有可能的对),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19320979/