std::count_if
时间: 2023-08-01 20:10:03 浏览: 165
std::count_if 是 STL 中的一个算法,用于对容器中的元素进行条件统计。它的函数原型如下:
```c++
template <class InputIterator, class Predicate>
typename iterator_traits<InputIterator>::difference_type
count_if(InputIterator first, InputIterator last, Predicate pred);
```
其中,first 和 last 分别表示容器中要进行统计的元素范围,pred 是一个谓词函数,用于对容器中的每个元素进行判断。count_if 函数会遍历容器中的每个元素,对每个元素都调用谓词函数 pred 进行判断,如果返回值为 true,则该元素被认为是符合条件的,计入统计结果。
count_if 函数返回符合条件的元素个数,其类型为 iterator_traits<InputIterator>::difference_type,表示两个迭代器之间的距离,通常是一个整型数。
下面是一个简单的例子,用于说明 std::count_if 算法的用法:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
bool isOdd(int num) {
return num % 2 == 1;
}
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用 std::count_if 算法和 isOdd 谓词函数,统计 vec 中奇数的个数
int count = std::count_if(vec.begin(), vec.end(), isOdd);
std::cout << "Count: " << count << std::endl;
return 0;
}
```
在这个例子中,我们定义了一个谓词函数 isOdd,用于判断一个数是否为奇数。然后,我们使用 std::count_if 算法和 isOdd 谓词函数来统计 vec 容器中奇数的个数。在调用 std::count_if 算法时,需要传入谓词函数 isOdd 作为第三个参数,表示对容器中的每个元素都要调用该函数进行判断。
阅读全文