私はboost :: filter_iteratorのペア(begin、end)を返すメソッドを実装しようとしています。boost異なる述語を持つフィルタイテレータ
私はこのメソッドをフィルタリングの点でカスタマイズできるようにしたいと思いますが、フィルターのイテレーターの範囲をtypedefすると、使用したい述語をハードコードする必要があるため、これを並べ替える方法がわかりませんメソッドが入力で受け取るパラメータに応じて選択します。
私はこのような何かがしたい:私は同様に可能テンプレート溶液について思ったが、私は1つは、呼び出す前に、自分のニーズに合った述語の実装とインスタンスにアクセスするためのクライアントが必要になります
enum FilterType
{
FilterOnState = 0,
FilterOnValue,
FilterOnSize,
FilterOnWhatever...
}
typedef boost::filter_iterator<PredicateStruct, std::list<Object>::iterator> filter_iterator;
std::pair<filter_iterator, filter_iterator> filterObjects(FilterType filterType);
をフィルターを使用すると、彼はほとんどすべて自分自身で仕事をするでしょう:それが私がenumベースのソリューションを最も好きにしている理由です。
template<typename P>
std::pair<boost::filter_iterator<P, std::list<Object>::iterator>,
boost::filter_iterator<P, std::list<Object>::iterator>> filterObjects(P& predicate);
述語 "ベースクラス"は、列挙ベースの実装の可能な解決策になりますか?
ありがとうございます! Giacomo