在C++中,count_if 是一个非常实用的算法函数,定义在 algorithm 头文件中。它可以结合 lambda 表达式 灵活地统计容器中满足特定条件的元素个数。相比传统的循环方式,这种写法更简洁、可读性更强。
包含必要的头文件使用 count_if 前,需要包含 algorithm 和容器相关的头文件,比如 vector:
#include <algorithm>#include <vector>
#include <iostream> 基本语法结构
count_if 接收三个参数:起始迭代器、结束迭代器和一个可调用对象(如 lambda)。lambda 定义判断条件,返回布尔值。
基本形式如下:
std::count_if(开始, 结束, lambda表达式); 示例:统计偶数个数假设有一个整数 vector,想统计其中偶数的个数:
std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int even_count = std::count_if(nums.begin(), nums.end(),
[](int n) { return n % 2 == 0; }
);
std::cout << "偶数个数:" << even_count << std::endl; // 输出 5
这里的 lambda [] (int n) { return n % 2 == 0; } 判断每个元素是否为偶数。

全面的AI聚合平台,一站式访问所有顶级AI模型


lambda 可以捕获外部变量,实现更灵活的统计。例如,统计大于某个阈值的元素个数:
int threshold = 5;int greater_count = std::count_if(nums.begin(), nums.end(),
[threshold](int n) { return n > threshold; }
);
std::cout << "大于 " << threshold << " 的个数:" << greater_count << std::endl; // 输出 5
lambda 通过值捕获 threshold,用于条件判断。
统计字符串容器中满足条件的元素也可以用于字符串容器,比如统计长度大于3的字符串数量:
std::vector<std::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 << "长度大于3的单词个数:" << long_word_count << std::endl; // 输出 2
基本上就这些。只要定义好条件逻辑,count_if 配合 lambda 能高效完成各种统计任务,代码清晰又不易出错。
以上就是C++如何使用count_if结合lambda实现统计的详细内容,更多请关注知识资源分享宝库其它相关文章!
相关标签: word go c++ ios String include const 字符串 int 循环 Lambda Length 对象 算法 大家都在看: Golang的包管理机制如何运作 介绍go mod的依赖管理方式 C++和Go之间有哪些区别? C++如何使用模板实现迭代器类 C++如何处理复合对象中的嵌套元素 C++内存模型与编译器优化理解
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。