1

私は を持っていてmultimap<pair<string,string>,vector> > mmap; 、それを 2 つのループで反復処理したいと思います。

  1. キーの最初の要素:key.first
  2. それからkey.second

equal_rangeこの場合、この方法は機能しますか?書き方は?

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

1 に答える 1

4

multimapは単一の順序付けのみをサポートしpairます。デフォルトでは、2 つの要素に対する辞書式順序付けになります。

(A, A) (A, B) ... (A, Z) (B, A) (B, B) ... (B, Z) ... (Z, A) ... (Z, Z)

2 つの異なるキーでインデックスを作成する必要がある場合は、Boost.MultiIndexなどの別のコンテナーを使用することをお勧めします。listたとえば、アイテムを に格納し、キーからリスト イテレータへのマップを保持することで、同じ効果を自分で実現できます。

list<vector> items;
map<string, list<vector>::iterator> index1;
map<string, list<vector>::iterator> index2;
于 2012-08-31T12:09:21.610 に答える