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