Top of document
©Copyright 1999 Rogue Wave Software

count, count_if


     Algorithm

Summary

Count the number of elements in a container that satisfy a given condition.

Contents

Synopsis

#include <algorithm>
template <class InputIterator, class T, class Size>
 void count(InputIterator first, InputIterator last,
            const T& value, Size& n);
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, and increments a counting value n each time it finds a match. i.e., count adds to n the number of iterators i in the range [first, last) for which the following condition holds:

*i == value

The count_if algorithm lets you specify a predicate, and increments n each time an element in the sequence satisfies the predicate. That is, count_if adds to n the number of iterators i in the range [first, last) for which the following condition holds:

pred(*i) == true.

Complexity

Both count and count_if perform exactly last-first applications of the corresponding predicate.

Example

//
// count.cpp
// 
 #include <vector>
 #include <algorithm>
 #include <iostream.h>
 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;
 }
Output :  2 0 7

Warnings

If your compiler does not support default template parameters then you need to always supply the Allocator template argument. For instance, you'll have to write:

vector <int, allocator>

instead of:

vector <int>

Top of document