少し苦労した後、ブーストfilter_iteratorのこの最小限の例をハックすることができました
using namespace std;
std::function<bool(uint32_t)> stlfunc= [](uint32_t n){return n%3==0;};
int main()
{
vector<uint32_t> numbers{11,22,33,44,55,66,77,3,6,9};
auto start = boost::make_filter_iterator(stlfunc, numbers.begin(), numbers.end());
auto end = boost::make_filter_iterator(stlfunc, numbers.end() , numbers.end());
auto elem = std::max_element(start,end);
cout << *elem;
}
それはうまく機能しますが、なぜmake_filter_iteratorがかかるのだろうかnumbers.end()
? そのように使用するのは間違っているかもしれません.C配列の例から推測しました:
http://www.boost.org/doc/libs/1_53_0/libs/iterator/example/filter_iterator_example.cpp