标题：count_if
STL 样本 count_if 函数
所需的头文件#include<algorithm>原型template<class InputIt, class T >typename iterator_traits<InputIt>::difference_type
count( InputIt first, InputIt last, const T &value );(1) template<class InputIt, class UnaryPredicate >typename iterator_traits<InputIt>::difference_type
count_if( InputIt first, InputIt last, UnaryPredicate p );(2)注：
返回的范围内的元素的数目[first, last)满足特定条件。重要的元素是等于value的第一个版本，第二个版本计算元素的谓词p回报true. 说明count_if 算法计算中的元素范围 [first, last) 导致返回 true，谓词的数量，并返回的谓词是真正的元素数。参数first, last - 检查的元素Original:the range of elements to examineThe text has been machine-translated via Google Translate.You can help to correct and verify the translation. Click here for instructions.value - 要搜索的值Original:the value to search forThe text has been machine-translated via Google Translate.You can help to correct and verify the translation. Click here for instructions.p - unary predicate which returns true所需的元素 Original:for the required elements The text has been machine-translated via Google Translate.You can help to correct and verify the translation. Click here for instructions.. The signature of the predicate function should be equivalent to the following: 
bool pred(const Type &a);The signature does not need to have const&, but the function must not modify the objects passed to it.The type Type must be such that an object of type InputIt can be dereferenced and then implicitly converted to Type. 
Type requirements -InputIt must meet the requirements of InputIterator. 返回值满足条件的元素的数量.复杂性完全由last - first比较/应用程序决定示例代码////////////////////////////////////////////////////////////////////// 
// 
// 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>
using namespace std;
// 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 ;
}
输出: 
NamesVect {She 销售海外壳通过海陆} 
以字母"S"开头的元素数 = 6