我有multimap<pair<string,string>,vector> > mmap;
我想用两个循环迭代它:
key.first
key.second
equal_range
方法在这种情况下是否有效?
怎么写呢?
pair<multimap<pair<string,string>,vector>::iterator,
multimap<pair<string,string>,vector>::iterator> key_range = mmap.equal_range( ?? );
答案 0 :(得分:4)
multimap
仅支持单个排序,pair
默认情况下是两个元素的词典排序:
(A, A) (A, B) ... (A, Z) (B, A) (B, B) ... (B, Z) ... (Z, A) ... (Z, Z)
如果您需要使用两个不同的键进行索引,最好使用另一个容器,例如Boost.MultiIndex。你可以通过例如自己达到同样的效果。将项目存储在list
中并将键从键中保存到列表迭代器中:
list<vector> items;
map<string, list<vector>::iterator> index1;
map<string, list<vector>::iterator> index2;