Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 密钥=对的多重映射_C++_Stl_Map - Fatal编程技术网

C++ 密钥=对的多重映射

C++ 密钥=对的多重映射,c++,stl,map,C++,Stl,Map,我有一个multimap>mmap 我想用两个循环对其进行迭代: 在键的第一个元素上:key.first 然后按一下键。第二次 在这种情况下,equal_range方法有效吗? 怎么写 pair<multimap<pair<string,string>,vector>::iterator, multimap<pair<string,string>,vector>::iterator> key_range = mmap.equal_r

我有一个
multimap>mmap
我想用两个循环对其进行迭代:

  • 在键的第一个元素上:
    key.first
  • 然后按一下键。第二次
  • 在这种情况下,
    equal_range
    方法有效吗? 怎么写

     pair<multimap<pair<string,string>,vector>::iterator,
     multimap<pair<string,string>,vector>::iterator> key_range = mmap.equal_range( ?? );
    
    pair key_range=mmap.equal_range(?);
    
    multimap
    仅支持单个排序,对于
    而言,默认情况下将是两个元素的词典排序:

    (A, A) (A, B) ... (A, Z) (B, A) (B, B) ... (B, Z) ... (Z, A) ... (Z, Z)
    
    如果需要使用两个不同的键进行索引,最好使用另一个容器,例如。您可以自己实现同样的效果,例如,将项目存储在
    列表中
    并持有从键到列表迭代器的映射:

    list<vector> items;
    map<string, list<vector>::iterator> index1;
    map<string, list<vector>::iterator> index2;
    
    列表项;
    地图索引1;
    map index2;
    
    multimap
    仅支持单个排序,对于
    而言,默认情况下将是两个元素的词典排序:

    (A, A) (A, B) ... (A, Z) (B, A) (B, B) ... (B, Z) ... (Z, A) ... (Z, Z)
    
    如果需要使用两个不同的键进行索引,最好使用另一个容器,例如。您可以自己实现同样的效果,例如,将项目存储在
    列表中
    并持有从键到列表迭代器的映射:

    list<vector> items;
    map<string, list<vector>::iterator> index1;
    map<string, list<vector>::iterator> index2;
    
    列表项;
    地图索引1;
    map index2;
    
    multimap>mmap;multimap>mmap;