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 返回指向第一个匹配元素的迭代器
相关推荐
一隅论数智14 小时前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
倒头就睡的小比特14 小时前
算法竞赛C++常用的STL
c++·算法
weilx123414 小时前
C++笔记-文件IO-<fcntl.h>
c++
XiHongShi201614 小时前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本15 小时前
离散数学第六课
学习·离散数学
Smileyqp沛沛16 小时前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车16 小时前
C/C++ 为什么需要编译器?
开发语言·c++
AI职业加油站16 小时前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
旖旎夜光17 小时前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控