重複の可能性:
std::map と同等の remove_if
私は文字列のセットを持っています:
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()
?