对于unordered_map,我想要进行反向查找(意味着找到给定值的键).人们可以期望使用std :: find很简单.我尝试了以下,但不起作用:
#include <unordered_map>
#include <algorithm>
int main()
{
std::unordered_map<int, int> map;
auto iter = std::find(map.begin(), map.end(), [](const std::pair<int, int> &pair) -> bool {
return pair.second == 4;
});
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨二进制表达式无效,显然它试图将值与谓词本身进行比较:
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/predefined_ops.h:194: 17:错误:二进制表达式的操作数无效('std :: pair'和'const(lambda at unordered_map.cpp:8:51)'){return*__ it == _M_value; }
我在这里错过了什么?据我所知,这应该是一个有效的谓词搜索地图.