在 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;
}
}
我有我的 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;
}
}