在multimap中,如何获取与给定值相关联的键?

时间:2016-04-07 20:37:18

标签: c++ c++11 multimap

我有multimap<int, std::string> map,它表示某些值的优先级,如下所示(按优先级降序排列):

<1, "element1"> // max priority
<1, "element2">
<1, "element3">
<2, "element4">
<3, "element5">
<3, "element6"> // min priority

有没有办法,给定一个值字符串“elementx”,以确定它与哪个键(因此优先级)相关联?

2 个答案:

答案 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;
    }
}