count统计等于指定值的元素个数,count_if通过谓词统计满足条件的元素个数,二者均需有效迭代器,适用于支持迭代器的容器,常用于简化条件统计逻辑。

在C++中,count 和 count_if 是标准库
count:统计等于特定值的元素个数
count函数用于统计区间内与指定值相等的元素数量。其基本语法如下:
count(起始迭代器, 结束迭代器, 值)返回值是满足条件的元素个数。
示例:
立即学习“C++免费学习笔记(深入)”;
#include <algorithm>#include <vector>
#include <iostream>
int main() {
std::vector<int> nums = {1, 2, 3, 2, 4, 2, 5};
int target = 2;
int n = std::count(nums.begin(), nums.end(), target);
std::cout << "数字 " << target << " 出现了 " << n << " 次。\n";
// 输出:数字 2 出现了 3 次。
return 0;
}
count\_if:统计满足自定义条件的元素个数
count_if更灵活,它接受一个谓词(函数、lambda表达式或函数对象),用来判断每个元素是否满足条件。
count_if(起始迭代器, 结束迭代器, 谓词)常见用法是结合lambda表达式,例如统计偶数、大于某值的数等。
示例:统计偶数个数
#include <algorithm>#include <vector>
#include <iostream>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8};
int evenCount = std::count_if(nums.begin(), nums.end(),
[](int x) { return x % 2 == 0; });
std::cout << "偶数个数:" << evenCount << "\n";
// 输出:偶数个数:4
return 0;
}
示例:统计大于5的元素个数
int greaterThanFive = std::count_if(nums.begin(), nums.end(),[](int x) { return x > 5; });
std::cout << "大于5的数有 " << greaterThanFive << " 个。\n";
使用注意事项
确保传入的迭代器有效,避免越界。容器需要支持迭代器遍历。
谓词函数必须返回布尔值(或可转换为bool的类型)。
对于自定义类型,可以结合成员变量或重载运算符使用count_if。
基本上就这些。count适合简单值匹配,count_if更强大,配合lambda几乎能处理所有条件统计。熟练使用这两个函数能显著简化代码逻辑。










