count_if
Материал из cppreference.com
Синтаксис:
#include <algorithm> typename iterator_traits<input_iterator>::difference_type count_if( input_iterator start, input_iterator end, UnaryPred p );
Функция count_if возвращает количество элементов между start и end, для которых предикат p возвращает истину.
Например, следующий код использует count_if с предикатом, который возвращает истину для числа 3, чтобы посчитать количество элементов массива, равных 3:
int nums[] = { 0, 1, 2, 3, 4, 5, 9, 3, 13 }; int start = 0; int end = 9; int target_value = 3; int num_items = count_if( nums+start, nums+end, bind2nd(equal_to<int>(), target_value) ); cout << "nums[] contains " << num_items << " items matching " << target_value << endl;
Вывод:
nums[] contains 2 items matching 3
Тот же результат можно получить, используя boost::bind:
int num_items = count_if( nums+start, nums+end, boost::bind(equal_to<int>(), target_value, _1) );
count_if можно использовать с контейнерами, такими как векторы:
int num_items = count_if( nums.begin(), nums.end(), boost::bind(equal_to<int>(), target_value, _1) );
Смотрите также: count