std::remove导致编译错误



我正在尝试使用问题的答案,并得到奇怪的错误-

/usr/include/c++/4.6/bits/stl_algo.h:162:错误:'__first中的'operator=='不匹配__gnucxx::__normal_iterator&lt_迭代器,_Container>::运算符*,_Iterator=User*,_Container=std::vector,__gnu_cxx::__normal_Iterator&lt_迭代器,_Container>::reference=用户&==__val’

我使用的是Linux(Ubuntu 64位),也许这是个问题。提前谢谢。

更新:我使用remove()的代码:

myVec.erase(std::remove(myVec.begin(), myVec.end(), vecMember), myVec.end());

std::remove调用operator==,您需要为User type:重载它

假设您比较用户名:

bool operator==(const User& lhs, const User& rhs)
{
   return lhs.name == rhs.name;
}

若你们仔细阅读,编译器消息告诉你们到底缺了什么。

或者,如果使用C++11 ,请将std::remove_if与lambda一起使用

myVec.erase(std::remove(myVec.begin(), myVec.end(), 
            [](const User& u){ return u.name == "name"; }), vec.end());

相关内容

  • 没有找到相关文章

最新更新