可能重复:
remove_if 等效于 std::map
我有一组字符串:
set <wstring> strings;
// ...
我希望根据谓词删除字符串,例如:
std::remove_if ( strings.begin(), strings.end(), []( const wstring &s ) -> bool { return s == L"matching"; });
当我尝试这样做时,我收到以下编译器错误:
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\algorithm(1840): error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const std::basic_string<_Elem,_Traits,_Ax>'
该错误似乎表明std::string
没有按值复制构造函数(这将是非法的)。std::remove_if
使用with 有什么不好的地方std::set
吗?我应该做其他事情,例如几次迭代,set::find()
然后是set::erase()
?