マップのマップされた値(キーの代わりに)を検索してキーを返す方法はありますか?通常、値を取得するにはsomeMap.find(someKey)->second
を実行しますが、ここでは逆を行い、キー(値とキーはすべて一意です)を取得します。マップのマップされた値を見つける
答えて
map
がどのように設計されているかによって、順序付けられていないデータの検索と同等の処理が必要になります。
for (it = someMap.begin(); it != someMap.end(); ++it)
if (it->second == someValue)
return it->first;
同じことです。彼は - >を呼び出すのではなく、単にポインタの逆参照をしています。おそらく、まったく同じコードにコンパイルされます。 – Falmarri
これはまさに必要なものかもしれませんが、コメントだけです:最初のキーを返します。これは 'someValue'への唯一のマッピングではないかもしれません。それが消去または変更されて次の検索で一致しなくても、begin()から反復を不必要に再開するのは良いことではありませんが、初期イテレータ値は関数の引数として渡すことができます。ポスターが出てくるような細部を探してほしいと思っています。 –
@Falmarri私はそれが同じことを知っています、私はちょうどそのようにそれを行う特定の理由があるのだろうかと思っています。コードは 'it(arrow)key'と同じくらい読みにくいと思います:) – wrongusername
あなたが探していることは2領域マップで、ブーストで利用可能な、それの実装があります:http://www.boost.org/doc/libs/1_36_0/libs/bimap/doc/html/index.html
struct test_type
{
CString str;
int n;
};
bool Pred(std::pair< int, test_type > tt)
{
if(tt.second.n == 10)
return true;
return false;
}
std::map< int, test_type > temp_map;
for(int i = 0; i < 25; i++)
{
test_type tt;
tt.str.Format(_T("no : %d"), i);
tt.n = i;
temp_map[ i ] = tt;
}
auto iter = std::find_if(temp_map.begin(), temp_map.end(), Pred);
コードを説明してください。 – rjdkolb
我々は、キーに値をマップするreverseMapを作成することができます。
と同様に、
map<key, value>::iterator it;
map<value, key> reverseMap;
for(it = originalMap.begin(); it != originalMap.end(); it++)
reverseMap[it->second] = it->first;
また、これは線形検索のような基本的ですが、あなたは、クエリの数を持っている場合に有用であろう。
- 1. F#マップ内のセットを見つける
- 2. Googleマップ - ユーザーを見つける方法
- 3. マップの値からキーを見つける
- 4. マップ内のキーを見つけ
- 5. マップを使用してネストされたリストの平均を見つける
- 6. C++与えられた値に最も近い値を持つマップのキーを見つける方法
- 7. マップ内で値が関数を満たすキーを見つける
- 8. Java 8ストリーム:マップされた値でマップするリスト
- 9. Clojure Spectre:特定の値を持つマップキーを見つける方法は?マップ内
- 10. のようなネストされたマップについては、ネストされたマップ
- 11. スカラーのマップの値の中でユニークな要素を見つける
- 12. ページ番号付けコンポーネント、パスを見つけるためのマップ配列
- 13. groovyのマップの値と比較してキーを見つける方法は?
- 14. マップのベクトル内のペアを見つける
- 15. Googleマップで複数の場所の中心を見つける
- 16. すべてのマップ座標の隣人を見つける
- 17. 私のアプリケーションのユーザーをGoogleマップで見つけるには?
- 18. Ocamlのマップでキーを見つける簡単な方法
- 19. iphone連絡先がGoogleマップのアドレスを見つける方法
- 20. Android用GoogleマップでLatLngBoundsの連合を見つける
- 21. ステレオ画像ペアの視差マップを見つけるには
- 22. groovy:マップ内のキーを見つけてその値を返します
- 23. マップされたホームステッドフォルダにダウンロードされたlaravelファイルが見つかりません
- 24. マップされたイベントスロー
- 25. 別のネストされたマップを含むマップを逆転する
- 26. thymleafマップ(ネストされたマップ)以下の構造を考える
- 27. Googleマップで距離を見つける角度
- 28. ArcGisマップでコーナーを見つけるには?
- 29. GoogleマップAPI:最短経路を見つける
- 30. MapBox/GoogleマップApi - 道路交差点を見つける
[キーと値の両方で検索するには良い方法がありますか?](http://stackoverflow.com/questions/3848483/is-there-a-good-way-to-search-by-両方のキーと値) –
@Fred:リンクされた質問は決して答えを受け取ったことがなく、代わりに(その特定の必要性を満たすように見えたが、それはポイントではない)。 –
[std :: map-C++で値をチェックする]の可能な複製があります(http://stackoverflow.com/questions/535317/checking-value-exist-in-a-stdmap-c) – CharlesB