挿入順序を含む std::Map
要素の順序が重要な場合、std::map 内の挿入順序を追跡することが重要です。 std::map は主にキー値に基づいて要素を並べ替えますが、要件に対処するには 2 つの解決策が考えられます。
解決策 1: std::Vector を使用する
std::vector を使用する場合、頻繁なルックアップとインクリメントによるパフォーマンスに関する懸念があると述べましたが、std::vector とカスタム コンパレーターを組み合わせることで、広告掲載順序を維持します。ただし、要素の数が大幅に増加した場合、このアプローチでは実際にパフォーマンス上の欠点が生じる可能性があることに注意することが重要です。
解決策 2: Boost::Multi-Index
限られた数 (50) の要素を使用する特定のシナリオでは、Boost マルチインデックス ライブラリが堅牢なソリューションを提供します。複数のインデックスを持つコンテナーを作成できます。あなたの場合、次のコード スニペットは、挿入オーダーと一意の文字列識別子の両方を追跡するマルチインデックス コンテナーを定義する方法を示しています。
struct value_t { string s; int i; }; struct string_tag {}; typedef multi_index_container< value_t, indexed_by< random_access<>, // this index represents insertion order hashed_unique<tag<string_tag>, member<value_t, string, &value_t::s>> > > values_t;
このマルチインデックス コンテナーにより、文字列識別子に基づいた効率的な検索が可能になります。 「random_access」インデックスを通じて広告掲載オーダーを保存します。
以上が特に要素数が限られている場合、std::map での挿入順序を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。