挿入されたキーと値のペアを std::map で順番に保存する
std::map はキーを保存するコンテナ データ構造です。 -キーに基づいてソートされた順序で値のペア。ただし、ペアの挿入順序を維持する必要が生じた場合、マップはこの機能を提供しなくなります。
代替ソリューション
コード例:
考慮してくださいboost::multi_index アプローチを使用したこのコード スニペット:
#include <boost/multi_index_container.hpp> #include <boost/multi_index/member.hpp> #include <boost/multi_index/random_access.hpp> #include <boost/multi_index/hashed_unique.hpp> struct value_t { std::string s; int i; }; struct string_tag {}; typedef boost::multi_index_container< value_t, boost::multi_index::indexed_by< boost::multi_index::random_access<>, // Insertion order index boost::multi_index::hashed_unique<boost::multi_index::tag<string_tag>, boost::multi_index::member<value_t, std::string, &value_t::s>> > > values_t;
この例では、values_t コンテナーは 2 つを使用します。インデックス: s メンバーの挿入オーダー インデックスとハッシュ化された一意のインデックス。これにより、順序付けられた反復と s キーによる効率的な検索の両方が可能になります。
以上がC でキーと値のペアを保存するときに挿入順序を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。