STL Sample for the count_if FunctionLast reviewed: October 9, 1997Article ID: Q156300 |
The information in this article applies to:
SUMMARYThe sample code below illustrates how to use the count_if, begin, and end STL function in Visual C++.
MORE INFORMATION
Required Header
<algorithm> Prototype
template<class InputIterator, class Predicate> inline
size_t count_if(InputIterator first, InputIterator last,
Predicate P)
NOTE: The class/parameter names in the prototype do not match the version
in the header file. Some have been modified to improve readability.
DescriptionThe count_if algorithm counts the number of elements in the range [first, last) that cause the predicate to return true, and returns the number of elements for which the predicate was true.
Sample Code
////////////////////////////////////////////////////////////////////// // // Compile options needed: /GX // // count.cpp : Illustrates how to use the count_if function. // // Functions: // // count_if - Count items in a range that satisfy a predicate. // // begin - Returns an iterator that points to the first element in // a sequence. // // end - Returns an iterator that points one past the end of a // sequence. // // Written by Kalindi Sanghrajka // of Microsoft Product Support Services, // Software Core Developer Support. // Copyright (c) 1996 Microsoft Corporation. All rights reserved. ////////////////////////////////////////////////////////////////////// // disable warning C4786: symbol greater than 255 character, // okay to ignore#pragma warning(disable: 4786)
#include <iostream> #include <algorithm> #include <functional> #include <string> #include <vector> // Return true if string str starts with letter 'S' int MatchFirstChar( const string& str){ string s("S") ;
return s == str.substr(0,1) ;
}
void main(){ const int VECTOR_SIZE = 8 ;
// Define a template class vector of strings
typedef vector<string, allocator<string> > StringVector ;
//Define an iterator for template class vector of strings
typedef StringVector::iterator StringVectorIt ;
StringVector NamesVect(VECTOR_SIZE) ; //vector containing names
StringVectorIt start, end, it ;
int result = 0 ; // stores count of elements
// that match value.
// Initialize vector NamesVect
NamesVect[0] = "She" ;
NamesVect[1] = "Sells" ;
NamesVect[2] = "Sea" ;
NamesVect[3] = "Shells" ;
NamesVect[4] = "by" ;
NamesVect[5] = "the" ;
NamesVect[6] = "Sea" ;
NamesVect[7] = "Shore" ;
start = NamesVect.begin() ; // location of first
// element of NamesVect
end = NamesVect.end() ; // one past the location
// last element of NamesVect
// print content of NamesVect
cout << "NamesVect { " ;
for(it = start; it != end; it++)
cout << *it << " " ;
cout << " }\n" << endl ;
// Count the number of elements in the range [first, last +1)
// that start with letter 'S'
result = count_if(start, end, MatchFirstChar) ;
// print the count of elements that start with letter 'S'
cout << "Number of elements that start with letter \"S\" = "
<< result << endl ;
}
Output:
NamesVect { She Sells Sea Shells by the Sea Shore } Number of elements that start with letter "S" = 6
REFERENCESVisual C++ Books On Line: Visual C++ Books:C/C++:Standard C++ Library Reference.
|
Additional query words: STL count_if begin end
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |