述語を純粋関数にしよう
EffectiveSTL第39項より。
え。この規則破ってるプログラムをどっかで書いた覚えがある。
やっべ。
gccはどうなっとんぞ
//3回operator()が呼び出された時true struct Predicate { private: size_t timeCalled; public: Predicate() :timeCalled(0){} bool operator()(int hoge) { ++timeCalled; return timeCalled == 3; } }; int main() { vector<int> v; for(int i = 0 ; i < 10 ; ++i) { v.push_back(i); } v.erase( remove_if( v.begin() , v.end() , Predicate() ) , v.end() ); copy( v.begin() , v.end() , ostream_iterator<int>(cout,"\n") ); }
結果
0 1 3 4 6 7 8 9
うわぁい駄目でした^q^