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 返回指向第一个匹配元素的迭代器。
相关推荐
FlightYe3 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
by209994 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
视觉小萌新4 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
Rover Ramble4 小时前
C++ 用互斥锁实现读写锁
开发语言·c++
你怎么知道我是队长5 小时前
C++零基础入门第2周:数据类型、运算符与表达式完全指南(附20段可运行代码+避坑清单)
c++
say_fall5 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
雪落漂泊5 小时前
C++算法 滑动窗口篇(下)
开发语言·c++
yyyang887 小时前
蓝牙系统整体架构详解
学习·信息与通信
Linux-lucky7 小时前
46-Linux学习之旅之LVS负载均衡与keepalived高可用
linux·运维·学习·ubuntu·负载均衡·lvs
你怎么知道我是队长8 小时前
C++零基础第3周:if/else、switch、for/while/do-while 控制流完全指南(附20段可运行代码+避坑清单)
java·开发语言·c++