1

マルチマップが同一のキーの挿入順序を保持するかどうかという質問は何度も出されてきましたが、標準ではそうでないと述べていることは明らかだと思います。どうやら C++0x はしばらくの間、それができると言っていたが、再びしなかったのですか?

とにかく、キーで検索できる構造が必要で、同一のキーを挿入順に繰り返し処理できます。つまり、複合キーを使用できないということです。では、どうすればキーで検索できますか?

では、VC++ はマルチマップの同一キーの挿入順序を維持しますか? (または、Microsoft の実装が見つからなかったので、どこで調べればよいでしょうか?) そうでない場合、最善の代替手段は何ですか? ブースト::マルチインデックス?

位置なしで挿入する代わりに、常に最初に目的の位置を検索し、同じキーの最後の要素を位置の提案として渡すとしたらどうでしょうか (たとえば、equal_range の 2 番目のイテレータを使用します)。これはおそらく機能する可能性があります(私はg ++とWindowsコンパイラのみを気にします)、その要素、次に次の要素と比較して、満足して挿入できると思いますか?または、ツリー構造は、実際には同一のキーに対してマジック リーフの切り替えを行わない可能性があり、間違った子が空いている場合はそこに挿入することを意味するため、できませんでしたか?

ちなみに、2つの構造を使用することを提案する答えがわかりません。確かにそれは削除を非常に高価にしますか?

4

2 に答える 2

3

std::map<std::vector<T> >すべての要件を満たします。

于 2011-07-16T23:18:38.140 に答える