unordered_map查找value值
时间: 2023-10-28 19:02:16 浏览: 148
unordered_map是C++标准库中的一个关联容器,它基于哈希表实现。要查找unordered_map中特定value值对应的键(key),可以使用以下方法:
```cpp
#include <iostream>
#include <unordered_map>
#include <algorithm>
int main() {
std::unordered_map<int, std::string> myMap = {
{1, "apple"},
{2, "banana"},
{3, "orange"},
{4, "grape"}
};
std::string targetValue = "banana";
auto it = std::find_if(myMap.begin(), myMap.end(), [&](const auto& pair) {
return pair.second == targetValue;
});
if (it != myMap.end()) {
std::cout << "Key found: " << it->first << std::endl;
} else {
std::cout << "Key not found." << std::endl;
}
return 0;
}
```
在上面的示例中,我们创建了一个unordered_map对象myMap,并初始化了一些键值对。然后,我们定义了目标值targetValue为"banana"。使用`std::find_if`函数和lambda表达式,我们遍历unordered_map,判断每个元素的value是否等于targetValue。如果找到匹配的元素,我们输出对应的键(key);否则,输出"Key not found."。
请注意,上述代码假定unordered_map中的value都是唯一的。如果有多个value相同的键值对,上述代码只会返回第一个匹配的键。如果需要查找所有value匹配的键,可以将所有匹配的键存储在一个容器中。
阅读全文