ホームページ > バックエンド開発 > C++ > キーと値を std::map から Vector に効率的に抽出するにはどうすればよいですか?

キーと値を std::map から Vector に効率的に抽出するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-30 11:16:11
オリジナル
438 人が閲覧しました

How to Efficiently Extract Keys and Values from a std::map into a Vector?

std::map から Vector へのキーと値の取得

std::map からのキーまたは値の取得と保存ベクトル内での操作は一般的な操作です。これを実現するにはさまざまな方法がありますが、広く使用されている 2 つのアプローチを以下に示します:

カスタム ファンクターの使用:

1 つの手法には、キーと値を変換するカスタム ファンクターの作成が含まれます。希望のタイプにペアリングします。たとえば、キーを取得するには:

struct RetrieveKey {
    template <typename T>
    typename T::first_type operator()(T keyValuePair) const {
        return keyValuePair.first;
    }
};
ログイン後にコピー

このファンクターを変換アルゴリズムで使用して、マップを反復処理してキーを抽出できます。

反復子の使用:

より単純なアプローチには、イテレータを使用してマップをループし、キーまたは値に直接アクセスすることが含まれます。この方法により、操作の柔軟性と制御が向上します。

for (std::map<int, int>::iterator it = m.begin(); it != m.end(); ++it) {
  keys.push_back(it->first);
  values.push_back(it->second);
}
ログイン後にコピー

ブースト ライブラリ オプション:

ブースト ライブラリの使用がオプションである場合、BOOST_FOREACH マクロは反復のための簡潔で読みやすい構文:

BOOST_FOREACH(pair<int, int> p, m) {
  v.push_back(p.first);
}
ログイン後にコピー

アプローチの選択最終的には、開発者の特定の要件と好みによって決まります。ファンクターのアプローチは多用途性を提供し、キーと値を個別に処理することができます。イテレーターはデータへの直接的かつ簡単なアクセスを提供します。 Boost ライブラリ オプションは、簡潔な構文で反復を簡素化します。

以上がキーと値を std::map から Vector に効率的に抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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