count_if结合lambda可高效统计容器中满足条件的元素个数,如统计偶数、大于阈值的数或长度超过3的字符串,代码简洁且可读性强。

在C++中,count_if 是一个非常实用的算法函数,定义在 algorithm 头文件中。它可以结合 lambda 表达式 灵活地统计容器中满足特定条件的元素个数。相比传统的循环方式,这种写法更简洁、可读性更强。
包含必要的头文件
使用 count_if 前,需要包含 algorithm 和容器相关的头文件,比如 vector:
#include#include
#include iostream>
基本语法结构
count_if 接收三个参数:起始迭代器、结束迭代器和一个可调用对象(如 lambda)。lambda 定义判断条件,返回布尔值。
基本形式如下:
立即学习“C++免费学习笔记(深入)”;
std::count_if(开始, 结束, lambda表达式);示例:统计偶数个数
假设有一个整数 vector,想统计其中偶数的个数:
std::vectorint even_count = std::count_if(nums.begin(), nums.end(),
[](int n) { return n % 2 == 0; }
);
std::cout
这里的 lambda [] (int n) { return n % 2 == 0; } 判断每个元素是否为偶数。
更复杂的条件判断
lambda 可以捕获外部变量,实现更灵活的统计。例如,统计大于某个阈值的元素个数:
int threshold = 5;int greater_count = std::count_if(nums.begin(), nums.end(),
[threshold](int n) { return n > threshold; }
);
std::cout
lambda 通过值捕获 threshold,用于条件判断。
统计字符串容器中满足条件的元素
也可以用于字符串容器,比如统计长度大于3的字符串数量:
std::vector<:string>words = {"cat", "dog", "elephant", "ant", "whale"};int long_word_count = std::count_if(words.begin(), words.end(),
[](const std::string& s) { return s.length() > 3; }
);
std::cout
基本上就这些。只要定义好条件逻辑,count_if 配合 lambda 能高效完成各种统计任务,代码清晰又不易出错。










