【发布时间】:2013-10-11 14:43:04
【问题描述】:
如何遍历 STL 映射以面对所有元素。换句话说,我想找到所有可能的配对。我想要一个高效的算法(复杂性)。
如果有 STL 向量,算法很简单。
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 向量中转换为 STL 映射,但是我会采用仅使用 STL 映射的方法
【问题讨论】:
-
根据定义,对于大小为 n 的映射,映射中的对数为 n*(n-1)/2。因此,没有比向量算法更有效的算法了。
-
所有可能的映射对或键或值的组合?
-
我想在 STL 向量中转换为 STL 映射,但是我会采用仅使用 STL 映射的方法