程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 簡單的程序诠釋C++ STL算法系列之六:count

簡單的程序诠釋C++ STL算法系列之六:count

編輯:C++入門知識

 

   C++STL的非變易算法(Non-mutating algorithms)是一組不破壞操作數據的模板函數,用來對序列數據進行逐個處理、元素查找、子序列搜索、統計和匹配。

 

    count算法用於計算容器中的某個給定值的出現次數。它有兩個使用原型,均計算迭代器區間[first, last)上等於value值的元素個數n,區別在於計數n是直接返回還是引用返回。

 

    函數原型:

 

 

template<class InputIterator, class Type> 

   typename iterator_traits<InputIterator>::difference_type count( 

      InputIterator _First,  

      InputIterator _Last,  

      const Type& _Val 

   ); 

 

template<class InputIterator, class T> inline 

   size_t count( 

      InputIterator First, 

      InputIterator Last, 

      const T& Value 

   ) 

 

示例代碼:

 

/*******************************************************************

 * Copyright (C) Jerry Jiang            

 * File Name   : count.cpp

 * Author      : Jerry Jiang

 * Create Time : 2011-10-6 20:25:37

 * Mail        : [email protected]

 * Blog        : http://blog.csdn.net/jerryjbiao              

 * Description : 簡單的程序诠釋C++ STL算法系列之六             

 *               非變易算法: 統計等於某值的容器元素個數count               

 ******************************************************************/ 

#pragma warning(disable:4786) 

 

#include <iostream> 

#include <algorithm> 

#include <list> 

#include <string> 

#include <vector> 

 

using namespace std; 

 

int main() 

    list<int> ilist; 

    for (list<int>::size_type index = 0; index < 100; ++index) 

    { 

        ilist.push_back( index % 20 ); 

    } 

 

    list<int>::difference_type num = 0; 

    int value = 9; 

    num = count(ilist.begin(), ilist.end(), value); 

 

    cout << "鏈表中元素等於value的元素的個數:" 

             << num << endl;         

 

    vector<string> vecString; 

    vecString.push_back("this"); 

    vecString.push_back("is"); 

    vecString.push_back("a"); 

    vecString.push_back("test"); 

    vecString.push_back("program"); 

    vecString.push_back("is"); 

 

    string valString("is"); 

 

    ptrdiff_t result = count(vecString.begin(), vecString.end(), valString); 

 

    cout << "容器中元素為is的元素個數:" 

         << result << endl; 

 

    return 0; 

}    摘自:Jerry.Jiang的程序人生

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved