挿入順序が重要な状況では、std::map のみに依存するだけでは十分ではない場合があります。挿入順序を維持することが優先される場合は、別のアプローチを検討する必要があります。
1 つのオプションには、値を反復して出力する前に、マップのコンテンツを std::vector に変換することが含まれます。適切なファンクターを活用することで、std::sort を使用して、挿入順序に基づいて要素を配置できます。
ただし、高速な検索が不可欠な場合 (1,000 万回など)、ベクターを使用するとパフォーマンスが低下する可能性があります。懸念事項。このようなシナリオに対して、boost::multi_index ライブラリは、マップの効率性と複数のインデックスの柔軟性を組み合わせたソリューションを提供します。
boost::multi_index:
このライブラリを使用すると、コンテナごとに複数のインデックスを確立できます。この特定のケースでは、string メンバーと int メンバーを使用して value_t 構造体を定義し、2 つのインデックスを利用できます:struct value_t { string s; int i; }; struct string_tag {}; typedef multi_index_container< value_t, indexed_by< random_access<>, // insertion order hashed_unique<tag<string_tag>, member<value_t, string, &value_t::s>> > > values_t;このアプローチにより、コンテナを反復するときに挿入順序を維持しながら効率的なルックアップが可能になります。
以上が効率的な検索を維持しながら、マップ内の挿入順序を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。