1
私はオブジェクトコンテナを持っています。クラスFooにはメンバ関数id()が整数識別子を返します。 これで、idが値よりも小さいオブジェクトを削除するには、stl algorithm remove_ifを使いたいと思います。 私はidの関数を提供したくありません、もし私がSTLで1行のコードを書くことは可能ですが、それを実装するためにブーストしてください。stl remove_if with class member function result
class Foo{
public:
unsigned id() const {return id_;}
...
private:
unsigned id_
...
};
list<Foo> foo_list;
std::remove_if(foo_list.begin(), foo_list.end(), ???);
STLだけのstd :: bind2nd、STL ::以下()、STD :: mem_fun_ref()または他のSTL関数でこれを行うことができます。
最新のコンパイラがあれば、[lambdas](http://en.cppreference.com/w/cpp/language/lambda)を参照してください。 –
@Joachim Pileborg私はvs2005を使用していますが、C++ 11のサポートはありません。 –
さて、あなたはこれらの3つのヘルパーと正しい軌道に乗っていますが、残念ながらC++にはSGIのcompose関数アダプタは含まれていません。だからあなたは自分のファンクタの周りを回らないでしょう。 C++ 11のラムダ(および一般化されたバインダ)が標準アルゴリズムの使用可能性をそれほど向上させるのはまさにその理由です。 –