ホームページ > バックエンド開発 > C++ > C でキーと値のペアを保存するときに挿入順序を維持するにはどうすればよいですか?

C でキーと値のペアを保存するときに挿入順序を維持するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-07 01:02:11
オリジナル
230 人が閲覧しました

How to Maintain Insertion Order When Storing Key-Value Pairs in C  ?

挿入されたキーと値のペアを std::map で順番に保存する

std::map はキーを保存するコンテナ データ構造です。 -キーに基づいてソートされた順序で値のペア。ただし、ペアの挿入順序を維持する必要が生じた場合、マップはこの機能を提供しなくなります。

代替ソリューション

  • std ::vector>: ベクトルを使用してペアを保存しますは簡単な広告掲載オーダーの追跡を提供しますが、頻繁な検索 (10,000,000 回) では遅くなる可能性があります。
  • boost::multi_index: このライブラリは、同じデータ構造です。これを使用して、挿入順序のインデックスを作成し、その順序でペアを反復してアクセスできるようにします。

コード例:

考慮してください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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート