Standard C++ Library Copyright 1998, Rogue Wave Software, Inc. NAME count, count_if - Count the number of elements in a container that satisfy a given condition. SYNOPSIS #include <algorithm> template<class InputIterator, class T> typename iterator_traits<InputIterator>::difference_type count(InputIterator first, InputIterator last, const T& value); template <class InputIterator, class T, class Size> void count(InputIterator first, InputIterator last, const T& value, Size& n); template<class InputIterator, class Predicate> typename iterator_traits<InputIterator>::difference_type count_if(InputIterator first, InputIterator last, Predicate pred); template <class InputIterator, class Predicate, class Size> void count_if(InputIterator first, InputIterator last, Predicate pred, Size& n); DESCRIPTION The count algorithm compares value to elements in the sequence defined by iterators first and last. The first ver- sion of count returns the number of matches. The second ver- sion increments a counting value n each time it finds a match. In other words, count returns (or adds to n) the number of iterators i in the range [first, last) for which the following condition holds: *i == value Type T must be EqualityComparable. COMPLEXITY The count_if algorithm lets you specify a predicate, and returns the number of times an element in the sequence satisfies the predicate (or increments n that number of times). That is, count_if returns (or adds to n) the number of iterators i in the range [first, last) for which the fol- lowing condition holds: pred(*i) == true. Both count and count_if perform exactly last-first applica- tions of the corresponding predicate. EXAMPLE // // count.cpp // // Does not demonstrate the partial specialization versions // of count and count_if // #include <vector> #include <algorithm> #include <iostream> using namespace std; int main() { int sequence[10] = {1,2,3,4,5,5,7,8,9,10}; int i=0,j=0,k=0; // // Set up a vector // vector<int> v(sequence,sequence + 10); count(v.begin(),v.end(),5,i); // Count fives count(v.begin(),v.end(),6,j); // Count sixes // // Count all less than 8 // I=2, j=0 // count_if(v.begin(),v.end(),bind2nd(less<int>(),8),k); // k = 7 cout << i << " " << j << " " << k << endl; return 0; } Program Output 2 0 7 WARNINGS If your compiler does not support partial specialization, then the first version of both count and count_if (the one that returns the count) is not available. If your compiler does not support default template parame- ters, then you always need to supply the Allocator template argument. For instance, you have to write: vector <int, allocator<int> > instead of: vector <int> If your compiler does not support namespaces, then you do not need the using declaration for std.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |