词条 | 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 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。