Я пытаюсь использовать ответы для вопрос и получаю странную ошибку —
/usr/include/c++/4.6/bits/stl_algo.h:162: ошибка: нет совпадения для оператора = operator == в ‘__first .__ gnu_cxx :: __ normal_iterator<_Iterator, _Container> :: operator * с _Iterator = Пользователь *, _Container = std :: vector, __gnu_cxx :: __ normal_iterator<_Iterator, _Container> :: reference = Пользователь& == __val ’
Я использую Linux (Ubuntu 64-bit) и, возможно, это проблема.
Заранее спасибо.
ОБНОВИТЬ:
код, где я использую remove ():
myVec.erase(std::remove(myVec.begin(), myVec.end(), vecMember), myVec.end());
std :: удалить звонки operator==
необходимо перегрузить его для вашего User type
:
Предположим, вы сравниваете пользователя по имени:
bool operator==(const User& lhs, const User& rhs)
{
return lhs.name == rhs.name;
}
Если вы внимательно прочитаете, компилятор сообщит вам, чего именно не хватает.
Альтернативно использовать станд :: remove_if с лямбда, если вы используете C ++ 11
myVec.erase(std::remove(myVec.begin(), myVec.end(),
[](const User& u){ return u.name == "name"; }), vec.end());
Других решений пока нет …