带键的多映射=对

Multimaps with key = pair

本文关键字:映射      更新时间:2023-10-16

我有一个multimap<pair<string,string>,vector> > mmap;我想用两个循环来迭代它:

  1. 关于密钥的第一个元素:key.first
  2. 则CCD_ 3

equal_range方法在这种情况下有效吗?怎么写?

 pair<multimap<pair<string,string>,vector>::iterator,
 multimap<pair<string,string>,vector>::iterator> key_range = mmap.equal_range( ?? );

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;