Dlaczego nie mogę usunąć łańcucha ze std :: set za pomocą std :: remove_if? [duplikować]
Możliwy duplikat:
remove_if odpowiednik dla std :: map
Mam zestaw ciągów:
set <wstring> strings;
// ...
Chcę usunąć ciągi zgodnie z predykatem, np .:
std::remove_if ( strings.begin(), strings.end(), []( const wstring &s ) -> bool { return s == L"matching"; });
Gdy próbuję tego dokonać, otrzymuję następujący błąd kompilatora:
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>'
Błąd wydaje się to sugerowaćstd::string
nie ma konstruktora kopiowania wartościowego (co byłoby nielegalne). Czy to w jakiś sposób złestd::remove_if
zstd::set
? Czy powinienem robić coś innego, na przykład kilka iteracjiset::find()
śledzony przezset::erase()
?