2
我想实现一个返回boost :: filter_iterator对(begin,end)的方法。boost使用不同谓词的迭代器
我希望这种方法可以根据过滤进行定制,但是我不知道我是如何解决这个问题的,因为当我typedef过滤器迭代器范围时,我必须对我想使用的谓词进行硬编码,而且我不能根据方法在输入中接收的参数选择它。
我想有这样的事情:
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);
我想到了一个可能的模板解决方案为好,但我需要的客户端访问谓词执行和实例一相适应自己的需要调用之前过滤器,他几乎可以自己完成所有工作:这就是为什么我最喜欢基于枚举的解决方案。
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