この投稿では、C++のマップから値を持つすべての一致するキーを見つける方法について説明します。

1.ループの使用

簡単な解決策は、イテレーターベースのforループを使用して、マップ内のすべてのマッピングを反復処理し、指定されたターゲットと一致する値をフィルター処理することです。これは、C++では次のように実装できます。

ダウンロード  コードを実行する

出力:

2
4

 
C++ 17以降では、範囲ベースのforループ内で構造化バインディングを使用できます。

コードをダウンロード

出力:

2
4

2.使用する BOOST_FOREACH

The BOOST_FOREACH イテレータまたは述語を直接処理することを回避することにより、C++ループを単純化します。たとえば、次のプログラムは BOOST_FOREACH マップの内容をループし、指定された値に一致するすべてのキーを取得します。

コードをダウンロード

出力:

2
4

これで、C++のマップから値を持つすべての一致するキーを見つけることができます。