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

In multimap, how to get the key associated to a given value?

我有我的 multimap<int, std::string> map,它代表一些值的优先级,像这样(按优先级降序排列):

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

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

您不能按值搜索 std::map

您唯一的选择是遍历整个地图并将地图中每个项目的值与 "elementx" 进行比较。您可以将密钥收集在合适的容器中,例如 std::set.

您要么在构建地图时需要反向地图 <string, int> map(以加快搜索速度),要么仅通过迭代器遍历地图:

for (auto it:map)
{
    if (it.second == "elementx")
    {
         std::cout << it.first << std:endl;
         break;
    }
}