マルチマップmultimap<int,pair<int,int>> edges
を考慮して、edges
で特定のペア(例:make_pair(1,2))の検索方法を教えてもらえますか?ご協力ありがとうございました!マルチマップで値で検索
0
A
答えて
0
標準アルゴリズムstd::find_if
を使用して、線形探索に勝るものはありません。:)
例えば
#include <iostream>
#include <unordered_map>
#include <algorithm>
#include <utility>
int main()
{
std::unordered_map<int, std::pair<int, int>> edges =
{
{ 1, { 1, 1 } }, { 2,{ 2, 2 } }, { 3, { 3, 3 } }
};
auto it = std::find_if(edges.begin(), edges.end(),
[p = std::make_pair(2, 2)](const auto &value)
{
return value.second == p;
});
std::cout << it->second.first << ' '
<< it->second.second << std::endl;
return 0;
}
プログラムの出力は
2 2
またはあなたのコンパイラは、このようなをサポートしていない場合でありますラムダ式のレコードでは、次のように書き直すことができます。
auto p = std::make_pair(2, 2);
auto it = std::find_if(edges.begin(), edges.end(),
[&](const auto &value)
{
return value.second == p;
});
std::cout << it->second.first << ' '
<< it->second.second << std::endl;
0
std::multimap
索引は、Key
のみです。あなたは値で検索することもできますが、それは線形検索になります(キーによる検索ほど効率的ではありません)。私はチェックアウトをお勧めしますBoost.BimapとBoost.MultiIndex。それにもかかわらず、キーで検索するには、次の操作を実行できます。
template<typename Map, typename Val = typename Map::value_type>
auto find_by_key(Map& mp, Val val){
return std::find_if(mp.begin(), mp.end(), [](auto& kv){ return kv.second == val; });
}
+0
ありがとうございます!10がペア(1,2)に属しているとします(おそらく他のペアも)。このケースにソリューションを投影してください。 ? – Roloka
関連する問題
- 1. CakePHP検索プラグイン、検索で指定された値以上の値を検索
- 2. ウォーターライン:JSONの値で検索
- 3. 3値以上で検索
- 4. BigQueryでの値の検索
- 5. スウィフト3.0の検索でjson検索値が返されます。
- 6. JSON値検索
- 7. MySQLの欠損値の検索/検索
- 8. マルチマップでソートされない
- 9. リーフレット検索アドレスで検索
- 10. Selenium python webdriver、検索バーの検索、値と検索の入力
- 11. マルチマップのキーからJSONArray値を取得
- 12. マルチマップからキーと値を取得
- 13. マルチマップから「値」を削除する
- 14. Googleシートスクリプト値でセルを検索
- 15. アドレスの値をウェブサイトで検索
- 16. 属性値でXElementを検索
- 17. キーアップでのデータ値の検索
- 18. 複数の値をExcelで検索
- 19. Office 365 Rest Data Extensions:プロパティ値で検索
- 20. ファンクタのc'torで値を検索
- 21. 値でRadListBoxアイテムを検索するサーバーサイド
- 22. パワーピボットでリンクテーブルの値を検索する
- 23. Hibernate検索フィールド値で行を取得
- 24. パンダ - '<'で始まる検索値
- 25. Apache Solr:多値フィールドでのファセット検索
- 26. ラジオボタングループの検索値
- 27. スマートフィルターバー値ヘルプ検索
- 28. 検索Z値は、
- 29. 検索ろ過値
- 30. マルチマップから値をプリントできません
文章を書いてください。 – Roloka
@Roloka最新の投稿を参照してください。 –
ああ、ありがとう!このページは自動的に更新されません。 :( – Roloka