C++编程学习

C++ 中 count 函数用法笔记

1. 算法库全局函数:std::count

  • 头文件#include <algorithm>

  • 作用:统计指定范围内某个值出现的次数。

  • 函数原型count(first, last, val)

  • 参数说明

    • first:起始迭代器。
    • last:结束迭代器(左闭右开区间 [first, last),不包含该位置)。
    • val:要统计的目标值。
  • 返回值:匹配元素的个数(整数类型),若未找到返回 0。

  • 时间复杂度:O(n)(线性遍历)。

  • 基础代码示例

    cpp 复制代码
    1    std::vector<int> vec = {1, 2, 3, 3, 4, 3, 5};
    2    int cnt = std::count(vec.begin(), vec.end(), 3); // 结果为 3

2. 关联容器成员函数:container.count()

  • 适用容器std::setstd::multisetstd::mapstd::multimap
  • 调用方式my_container.count(val)(无需传入迭代器)。
  • 时间复杂度:O(log n)(基于红黑树等底层结构,比全局函数更高效)。
  • 特殊说明 :对于不允许重复元素的容器(如 setmap),返回值只能是 0 或 1,常用于判断元素是否存在。

3. 扩展:按条件统计 std::count_if

  • 作用:统计范围内满足特定条件的元素个数。

  • 参数说明:前两个参数为迭代器,第三个参数为谓词(如 Lambda 表达式)。

  • 代码示例(统计偶数个数)

    cpp 复制代码
    1     int even_cnt = std::count_if(vec.begin(), vec.end(), [](int x){ 
    2         return x % 2 == 0; 
    3     });

4. 核心注意事项

  • 头文件依赖 :使用全局 std::countstd::count_if 必须包含 <algorithm>
  • 比较运算符std::count 内部依赖 operator==。若自定义类型未重载 ==,会编译报错,此时应改用 count_if
  • 与 find 的区别count 返回匹配元素的数量find 返回指向第一个匹配元素的迭代器
相关推荐
网安蟹佬霸1 小时前
2026网络安全每日学习计划:每天学多久?学什么?怎么安排?照着做就行!
网络·学习·安全·web安全·学习路线·网安
一条破秋裤2 小时前
TIM 输入捕获与 PWMI:从边沿到频率、占空比
笔记·stm32·学习
哭泣方源炼蛊2 小时前
并查集进阶 P1(带权并查集,并查集分类)
数据结构·c++·算法·二进制·带权并查集
2601_949950632 小时前
考研英语资料太散?用小程序把真题、词汇和错题放到一起
人工智能·学习·考研·小程序·刷题·小程序推荐
熊猫钓鱼>_>2 小时前
鸿蒙AI Agent新范式:从“对话式辅助”到“工程化代理”的Harness架构实战解析
人工智能·笔记·学习·华为·架构·harmonyos
2501_919749033 小时前
华为鸿蒙管理学习生活与工作APP—小羊管理
学习·华为·生活·harmonyos·鸿蒙
小小龙学IT3 小时前
ONNX Runtime 开源 AI 推理引擎深度解析:从模型部署到边缘 AI 加速的全栈实战
c++·人工智能·开源
一条破秋裤3 小时前
STM32 学习笔记:PWM 输出比较原理与计算
笔记·stm32·学习