count_if


请输入要查询的词条内容:

count_if


STL 样本 count_if 函数
所需的页眉

<algorithm>

原型

template<class InputIterator, class Predicate> inline size_t count_if(InputIterator first, InputIterator last, Predicate P)                               

注: 在原型中的类/参数名称与在头文件版本不匹配。某些已被修改,以提高可读性。

说明

count_if 算法计算中的元素范围 [first, last) 导致返回 true,谓词的数量,并返回的谓词是真正的元素数。

示例代码

//////////////////////////////////////////////////////////////////////

//

// 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 << " }\" << 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

相关分词: count_if count if