SGI

计数

类别: 算法 组件类型: 函数

原型

Count是一个重载名称:有两个计数函数。
template <class InputIterator, class EqualityComparable>
iterator_traits<InputIterator>::difference_type
count(InputIterator first, InputIterator last, 
      const EqualityComparable& value);

template <class InputIterator, class EqualityComparable, class Size>
void count(InputIterator first, InputIterator last, 
           const EqualityComparable& value,
           Size& n);

描述

Count查找在[first, last)中等于value的元素个数。更准确地说,第一个版本计数返回迭代器i[first, last)中满足*i == value的个数。第二个版本计数将迭代器个数加到n中。i[first, last)中满足*i == value.

第二个版本的计数是在最初的 STL 中定义的,而第一个版本是在 C++ 标准草案中定义的;定义被更改是因为旧的接口笨拙且容易出错。旧的接口要求使用一个临时变量,该变量必须在调用计数.

之前初始化为 0。出于向后兼容性的原因,这两个接口目前都受支持 [1],但最终旧版本将被移除。

定义

在标准头文件 algorithm 和非标准向后兼容头文件 algo.h 中定义。

类型要求

对于第一个版本(接受三个参数)对于第二个版本(接受四个参数)

先决条件

对于第二个版本

的最小值。

复杂度线性。正好last - first

次比较。

int main() {
  int A[] = { 2, 0, 4, 6, 0, 3, 1, -7 };
  const int N = sizeof(A) / sizeof(int);

  cout << "Number of zeros: " 
       << count(A, A + N, 0)
       << endl;
}

示例

注释计数[1] 新的接口使用iterator_traits计数类,它依赖于一个称为部分特化的 C++ 特性。当今的许多编译器都没有实现完整的标准;特别是,许多编译器不支持部分特化。如果您的编译器不支持部分特化,则您将无法使用更新版本的接口使用.

或任何其他涉及

的 STL 组件。, 另请参阅, count_if
[Silicon Surf] [STL Home]
find find_if