std::count_if的实现
时间: 2024-01-19 22:03:50 浏览: 74
`std::count_if` 函数是 STL 中的一个算法函数,用于统计满足谓词函数条件的元素个数。它的实现类似于下面这段代码:
```cpp
template <typename InputIterator, typename UnaryPredicate>
typename iterator_traits<InputIterator>::difference_type
count_if(InputIterator first, InputIterator last, UnaryPredicate pred) {
typename iterator_traits<InputIterator>::difference_type count = 0;
for ( ; first != last; ++first) {
if (pred(*first)) {
++count;
}
}
return count;
}
```
这段代码的意思是:接受两个迭代器参数 `first` 和 `last`,表示需要统计的元素范围;接受一个谓词函数参数 `pred`,用于判断元素是否满足条件。函数内部使用 for 循环遍历元素范围,如果元素满足条件,就将计数器 `count` 加 1。最后返回计数器 `count` 的值,即满足条件的元素个数。
需要注意的是,这里使用了 `iterator_traits` 类型萃取技术,以支持不同类型的迭代器,包括指针、随机访问迭代器、双向迭代器等。具体来说,`typename iterator_traits<InputIterator>::difference_type` 表示计数器 `count` 的类型,它可以是一个整型、一个长整型、一个指针等,根据迭代器类型的不同而不同。
阅读全文