对于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;
});
}
编译器抱怨二进制表达式无效,显然它试图将值与谓词本身进行比较:
的/ usr / bin中/../ LIB / GCC / x86_64的-Linux的GNU / 5.4.0 /../../../../包括/ C ++ / 5.4.0 /比特/ predefined_ops.h :194:17:错误:二进制表达式的操作数无效 ('std :: pair'和'const(lambda at unordered_map.cpp:8:51)') {return * __ it == _M_value; }
我在这里缺少什么?据我所知,这应该是一个有效的谓词搜索地图。
答案 0 :(得分:6)
std::find
函数用于在容器中查找值。如果您有要使用的谓词,请使用std::find_if
。