前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不造轮子之STL中统计算法

不造轮子之STL中统计算法

作者头像
程序员的园
发布2024-09-30 16:06:44
1110
发布2024-09-30 16:06:44
举报
文章被收录于专栏:程序员的园——原创文章

在日常的开发中,常涉及到容器的常见操作,如查找、删除、排序等,C++ STL提供了丰富的算法库,可以方便的完成这些操作。为了避免重复造轮子,同时为了提高效率,了解常见的STL算法是非常有必要的。本文将介绍统计相关算法。

1. std::all_of

功能:检查范围内的所有元素是否都满足某个条件。

代码语言:javascript
复制
#include <iostream>
#include <vector>
#include <algorithm>

int main() 
{
 std::vector vec = {2, 4, 6, 8};
 bool all_even = std::all_of(vec.begin(), vec.end(),
    [](int i){ return i % 2 == 0; });
 std::cout << (all_even ? 
   "All are even" : "Not all are even") << std::endl;
}

解读:std::all_of 函数检查容器中的所有元素是否都满足lambda表达式中的条件。

2. std::any_of

功能:检查范围内的任意一个元素是否满足某个条件。

代码语言:javascript
复制
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
 std::vector vec = {1, 3, 5, 7};
 bool any_odd = std::any_of(vec.begin(), vec.end(),
    [](int i){ return i % 2 != 0; });
 std::cout << (any_odd ? "At least one is odd" : "All are even") << std::endl;
}

解读:std::any_of 函数检查容器中是否存在至少一个元素满足lambda表达式中的条件。

3. std::none_of

功能:检查范围内的所有元素是否都不满足某个条件。

代码语言:javascript
复制
#include <iostream>
#include <vector>
#include <algorithm>

int main() 
{
 std::vector vec = {2, 4, 6, 8};
 bool none_odd = std::none_of(vec.begin(), vec.end(), 
   [](int i) { return i % 2 != 0; });
 std::cout << (none_odd ?
    "None are odd" : "At least one is odd") << std::endl;
}

解读:std::none_of 函数检查容器中的所有元素是否都不满足lambda表达式中的条件。

4. std::count

功能:统计范围内满足某个条件的元素个数。

代码语言:javascript
复制
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
 std::vector vec = {1, 2, 3, 2, 4, 2, 5};
 int count = std::count(vec.begin(), vec.end(), 2);
 std::cout << "Count of 2: " << count << std::endl;
}

解读:std::count 函数统计容器中等于指定值的元素个数。

5. std::count_if

功能:统计范围内满足某个条件的元素个数。

代码语言:javascript
复制
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
 std::vector vec = {1, 2, 3, 4, 5};
 int count = std::count_if(vec.begin(), vec.end(), 
   [](int i){ return i % 2 == 0; });
 std::cout << "Count of even numbers: " << count << std::endl;
}

解读:std::count_if 函数统计容器中满足lambda表达式条件的元素个数。

总结

本文介绍了C++ STL中统计相关算法,包括std::all_of、std::any_of、std::none_of、std::count和std::count_if,这些算法可以帮助我们方便地完成对容器中元素的统计操作。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员的园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档