本质上,我有几种情况boost::filter_iterator
用于过滤某些条件的迭代器。有一种情况,我想同时过滤 2 个条件,我们已经有一些预先存在的代码,但我想知道是否有使用 boost 或标准库的惯用方法:
/*! 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 可以处理它就可以了。