Как написать функцию с параметром boost :: Range?

Это хороший способ реализовать мои собственные функции (например, DoSomethingWithRange ), которые принимают диапазон ускорения в качестве параметра?

#include 
#include 
#include 
#include 
#include 

using namespace std;

template 
    void DoSomethingWithRange(const RangeType &range)
{
    typename RangeType::const_iterator beginIt = boost::begin(range);
    typename RangeType::const_iterator endIt = boost::end(range);

    for(typename RangeType::const_iterator it = beginIt; it != endIt; ++it)
    {
        cout << *it << endl;
    }
}

bool IsPos(int i)
{
    return i>0;
}

int main(int , char** )
{
    vector test;

    test.push_back(1);
    test.push_back(-1);

    DoSomethingWithRange(test | boost::adaptors::filtered(IsPos));
}

7
задан nabulke 29 February 2012 в 15:09
поделиться