STL count算法

本文內容來自C++Plus,本文只是本人的總結和翻譯而已。本人只是C++的搬運工。

原文傳送門:http://www.cplusplus.com/reference/algorithm/count/


count算法:計算指定值在範圍內的個數。

template <class InputIterator, class T>
  typename iterator_traits<InputIterator>::difference_type
    count (InputIterator first, InputIterator last, const T& val)
{
  typename iterator_traits<InputIterator>::difference_type ret = 0;
  while (first!=last) {
    if (*first == val) ++ret;
    ++first;
  }
  return ret;
}


使用這個算法的話必須要確保先重載過operator==  否者無法使用。這個算法繼承了一個萃取器,返回值是一個signed integral type。


// count algorithm example
#include <iostream>     // std::cout
#include <algorithm>    // std::count
#include <vector>       // std::vector

int main () {
  // counting elements in array:
  int myints[] = {10,20,30,30,20,10,10,20};   // 8 elements
  int mycount = std::count (myints, myints+8, 10);
  std::cout << "10 appears " << mycount << " times.\n";

  // counting elements in container:
  std::vector<int> myvector (myints, myints+8);
  mycount = std::count (myvector.begin(), myvector.end(), 20);
  std::cout << "20 appears " << mycount  << " times.\n";

  return 0;
}

注意事項:用該算法之前要先確保你使用的容器是已經operator==  過的容器,如果是自己的封閉空間,就要自己operator==。



發佈了68 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章