std :: find(无序)地图

Mar*_*tto 3 c++

对于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; }

我在这里错过了什么?据我所知,这应该是一个有效的谓词搜索地图.

Som*_*ude 6

std::find函数用于在容器中查找.如果您有想要使用的谓词,请使用std::find_if.

参见例如std::findstd::find_if参考.