Почему я не могу удалить строку из std :: set с помощью std :: remove_if? [Дубликат]

Possible Duplicate:
remove_if equivalent for 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 сstd::set ? Должен ли я делать что-то еще, например, несколько итерацийset::find() с последующимset::erase() ?

Ответы на вопрос(2)

Ваш ответ на вопрос