类别: 算法 | 组件类型: 函数 |
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);
第二个版本的计数是在最初的 STL 中定义的,而第一个版本是在 C++ 标准草案中定义的;定义被更改是因为旧的接口笨拙且容易出错。旧的接口要求使用一个临时变量,该变量必须在调用计数.
之前初始化为 0。出于向后兼容性的原因,这两个接口目前都受支持 [1],但最终旧版本将被移除。
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++ 特性。当今的许多编译器都没有实现完整的标准;特别是,许多编译器不支持部分特化。如果您的编译器不支持部分特化,则您将无法使用更新版本的接口使用.