基本的にboost::filter_iterator
、いくつかの条件で反復子をフィルター処理するために使用している状況がいくつかあります。2つの条件を同時にフィルタリングしたい状況があり、これにはすでにいくつかの既存のコードがありますが、ブーストまたは標準ライブラリでこれを行う慣用的な方法があるかどうか知りたいです:
/*! TODO: Surely there should be something in std/boost to achieve this??? */
/*! Filter for things that satisfy F1 and F2 */
template <
typename F1,
typename F2,
typename ArgT
>
struct filter_and
{
F1 f1;
F2 f2;
filter_and(F1 _f1, F2 _f2): f1(_f1), f2(_f2)
{}
inline bool operator() (ArgT const& arg) const
{
return f1(arg) && f2(arg);
}
};
ソリューションに c++11 が必要な場合、最新の MSVC で処理できる限り問題ありません。