Warum kann ich mit std :: remove_if keine Zeichenfolge aus einem std :: set entfernen? [Duplikat]
Mögliche Duplikate:
remove_if-Äquivalent für std :: map
Ich habe eine Reihe von Zeichenfolgen:
set <wstring> strings;
// ...
Ich möchte Zeichenfolgen gemäß einem Prädikat entfernen, z.
std::remove_if ( strings.begin(), strings.end(), []( const wstring &s ) -> bool { return s == L"matching"; });
Wenn ich das versuche, erhalte ich den folgenden Compiler-Fehler:
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>'
Der Fehler scheint darauf hinzudeutenstd::string
hat keinen By-Value-Copy-Konstruktor (was illegal wäre). Ist es irgendwie schlecht zu bedienenstd::remove_if
mitstd::set
? Sollte ich stattdessen etwas anderes tun, wie zum Beispiel mehrere Iterationen vonset::find()
gefolgt vonset::erase()
?