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::set、std::multiset、std::map、std::multimap。
  • 调用方式 :my_container.count(val)(无需传入迭代器)。
  • 时间复杂度:O(log n)(基于红黑树等底层结构,比全局函数更高效)。
  • 特殊说明 :对于不允许重复元素的容器(如 set 和 map),返回值只能是 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::count 或 std::count_if 必须包含 <algorithm>。
  • 比较运算符 :std::count 内部依赖 operator==。若自定义类型未重载 ==,会编译报错,此时应改用 count_if。
  • 与 find 的区别 :count 返回匹配元素的数量 ;find 返回指向第一个匹配元素的迭代器。
相关推荐
滕州市燕猫虎计算机科技工作室个体工商户3 小时前
《Rust程序设计》学习笔记八:结构体
笔记·学习·rust·rust程序设计
别动我齐刘海4 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
xier_ran5 小时前
【infra之路】AI 编译器学习笔记(二):重拾 C++——移动语义与 LLVM 风格的类型转换
人工智能·笔记·学习
li星野7 小时前
5 TYPES OF ADVERBS — One-Page Notes
学习
星恒随风7 小时前
Linux库的底层原理:ELF文件格式、静态链接、程序加载、虚拟地址空间与GOT/PLT详解
linux·运维·笔记·学习·状态模式
罗西的思考7 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 — (7)— 混合机制
笔记·学习
jimy18 小时前
C++ 虚函数表:基类和派生类共用一张 vtable 吗?
开发语言·c++
爱吃提升8 小时前
Dev-C++ 5.11 C++断点调试完整教程
开发语言·c++
starsky762388 小时前
Agent学习——上下文工程(三)
学习
xlq223229 小时前
全面复习7
c++