C++ - 在地图中搜索所有具有相同值的键的最快方法是啥?
Posted
技术标签:
【中文标题】C++ - 在地图中搜索所有具有相同值的键的最快方法是啥?【英文标题】:C++ - What is the fastest way to search for all the keys with same value in a map?C++ - 在地图中搜索所有具有相同值的键的最快方法是什么? 【发布时间】:2017-09-28 09:20:31 【问题描述】:假设我们有一个初始化的地图:
const std::map<int, std::string> map =
0, "A" ,
1, "B" ,
2, "A" ,
3, "A" ,
4, "C" ,
5, "A" ,
// ...
;
在存在 1 到 1000 个值的情况下,检索与值 "A"
关联的所有键的最快方法是什么?
【问题讨论】:
地图多地图组合。只有内存才能为执行速度买单。 define "fastest method":最快的写、读、编译、运行..? 【参考方案1】:您可以使用 Boost.Bimap。 Boost.Bimap 是 C++ 的双向地图库。使用 Boost.Bimap,您可以创建关联容器,其中两种类型都可以用作键。
【讨论】:
出于 OP 的目的,它应该是boost::bimap <int, boost::bimap::multiset_of <std::string> >
。【参考方案2】:
如果std::map
的值不包含索引,您只能这样做:
#include <iostream>
#include <map>
#include <string>
int main()
const std::map<int, std::string> map =
0, "A" ,
1, "B" ,
2, "A" ,
3, "A" ,
4, "C" ,
5, "A" ,
;
for (const auto& pair : map)
if (pair.second == "A")
std::cout << '' << pair.first << ", " << pair.second << "\n";
【讨论】:
以上是关于C++ - 在地图中搜索所有具有相同值的键的最快方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章