【发布时间】:2014-09-17 02:22:40
【问题描述】:
我有一张地图如下:
std::map<int, std::unique_ptr<Person>> ratingMap;
我想创建一个函数,它接受一个字符串参数 _name 并遍历地图,直到找到一个同名的人:
void Person::deleteFromMap(const std::string& _name){
//Searches the map for a person whose name is the same as the argument _name
auto found = std::find(ratingMap.begin(), ratingMap.end(),
[&](const std::unique_ptr<Person>& person) -> bool{return person->getName() == _name; });
但是,这拒绝编译并给出以下错误:
错误 1 错误 C2678:二进制“==”:未找到采用“std::pair”类型的左侧操作数的运算符(或没有可接受的转换)
我已经花了将近两个小时来尝试它的变体以试图让它工作,因为我过去写过类似的 lambda 函数,像这样编译并按预期工作。为什么会这样?
【问题讨论】:
标签: c++ c++11 lambda find stdmap