STL + BOOST.bind



есть

vector<int> vint;

vint.push_back(1);

vint.push_back(2);

vint.push_back(3);



делаем



count_if( vint.begin(), vint.end(), bind(std::greater_equal<int>(), _1, 2 ) )



получаем количество элементов в контейнере значение которых >= 2



в STL было бы понятней, но не намного:



count_if(vint.begin(),vint.end(), bind2nd( std::greater_equal<int>(), 2 ) )



зато т.к. bind гибкий (т.к. перегружен неимоверное количество раз) то можно писать чето вроде:



cout<<

count_if(vint.begin(),vint.end(),

bind(logical_and<int>(),

bind(greater_equal<int>(),_1,2),

bind(less_equal<int>(),_1,3)))

<<endl;



оно даст количество эелементов в контейнере которые >=2 и <=3