我有multimap<int, std::string> map
,它表示某些值的优先级,如下所示(按优先级降序排列):
<1, "element1"> // max priority
<1, "element2">
<1, "element3">
<2, "element4">
<3, "element5">
<3, "element6"> // min priority
有没有办法,给定一个值字符串“elementx”,以确定它与哪个键(因此优先级)相关联?
答案 0 :(得分:0)
您无法按值搜索std::map
。
您唯一的选择是迭代整个地图,并将地图中每个项目的值与"elementx"
进行比较。您可以将密钥收集到合适的容器中,例如std::set
。
答案 1 :(得分:0)
您需要在构建地图时使用反向地图<string, int> map
(以便更快地搜索),或者只需通过迭代器浏览地图:
for (auto it:map)
{
if (it.second == "elementx")
{
std::cout << it.first << std:endl;
break;
}
}