四種方法讓我想起按照價值在地圖中查找。這些方法在速度方面的偏好順序是什麼?按價值查找地圖 - 在速度方面偏好方法
假設鍵和值都是唯一的。
std::map<int, std::string>
或std::unordered_map<int, std::string>
- 使用
boost::bimap
如果Boost庫可 - 使用
std::find_if
與謂詞/仿一些相等的比較邏輯 - 在填充
std::map<int, string>
的時間,創造&填充 另一std::map<std::string, int>
並在第二張地圖上執行map::find
。 - 迭代通過整個地圖,並檢查
if (iter->second == value_to_find)
, 如果發現break;
我會重點在任何時候通過值進行查找和一次或兩次。
如果在你的'std :: map'內按值搜索是一種常見操作,也許你不應該首先使用'std :: map'。 – ereOn
我想,當你使用std:map時,第四種方法沒有意義。爲什麼可以使用map :: find來代替? –
如果想要通過價值和關鍵都找到,boost :: bimap是正確的選擇。但是,如果您只想按值搜索,爲什麼不使用帶有字符串「值」的關鍵字的映射或多重映射?無論如何,如果你在第三點上有問題,你可能不得不使用多圖來代替 –