当前位置: 首页 > news >正文

cppreference_docs

概念参数数量返回值类型核心用途典型算法依赖
UnaryPredicate1bool单元素条件判断count_if、find_if、remove_if
UnaryFunction1任意类型单元素转换、计算transform(一元版)
BinaryPredicate2bool双元素关系判断sort、unique、merge
BinaryFunction2任意类型双元素组合、计算transform(二元版)、inner_product
Generator0任意类型无参数生成值generate、generate_n
Procedure任意void执行副作用操作for_each

for_each

count

cout_if 

所有加了if的操作, 可以理解为一种选择, 比如上面就是选择性计数  需要自定义选择性函数

find, find_if, find_if_not

find_if选择性find   find_if_not选择性不find  

 partition

// 模板函数:将范围 [first, last) 按谓词 p 分区——满足 p 的元素移到前半段,不满足的移到后半段
// 模板参数说明:
//   ForwardIt:前向迭代器类型(支持 ++、解引用 *、iter_swap 操作,如 vector::iterator、list::iterator)
//   UnaryPredicate:一元谓词类型(接收单个元素参数,返回 bool,true 表示元素属于前半段)
// 参数说明:
//   first/last:待分区的左闭右开范围 [first, last),需提前确保迭代器合法
//   p:分区谓词(判断元素是否应放在前半段)
// 返回值:指向“前半段(满足 p)末尾、后半段(不满足 p)开头”的迭代器(即第一个不满足 p 的元素位置)
template<class ForwardIt, class UnaryPredicate>
ForwardIt partition(ForwardIt first, ForwardIt last, UnaryPredicate p)
{// 第一步:找到「第一个不满足谓词 p 的元素」,用 first 指向它// 作用:前半段的“待交换位置”从这个元素开始(因为它之前的元素都已满足 p,无需处理)// std::find_if_not:遍历 [first, last),返回第一个使 p 返回 false 的元素迭代器first = std::find_if_not(first, last, p);// 第二步:检查是否所有元素都满足 p(first 已指向 last,说明前半段就是整个范围)// 若所有元素都满足 p,直接返回 first(即 last),无需后续分区if (first == last) return first;// 第三步:遍历剩余元素(从 first 的下一个元素开始,记为 i),执行分区核心逻辑// i 是“当前待检查元素”的迭代器,遍历范围 [next(first), last)for (ForwardIt i = std::next(first); i != last; ++i) {// 核心判断:若当前元素 i 满足谓词 p(应属于前半段)if (p(*i)) {// 1. 交换 i 和 first 指向的元素:将满足 p 的元素 i 移到前半段的“待交换位置”first//    (此时 first 指向的是不满足 p 的元素,交换后该元素被移到 i 的位置,归入后半段)std::iter_swap(i, first);// 2. 将 first 向后移动一位:更新前半段的“待交换位置”(下一个不满足 p 的元素位置)++first;}// 若当前元素 i 不满足 p,无需操作,直接进入下一轮遍历(i 自然归入后半段)}// 循环结束后,first 恰好指向“前半段末尾、后半段开头”,返回该迭代器作为分区边界return first;
}

fill_n

lower_bound

当相等的时候选择左边部分

upper_bound

注意!(value < *it) 等价于 (*it <= value)

当相等的时候选择右边部分

equal_range

它的本质是调用上面的两个函数

copy, copy_if

transform

把字符串中的小写字母变成大写字母

merge

merge是要求是排好顺序的, 并且是升序排序

qsort

在C++标准库中,qsort函数被用于对数组进行排序。当排序时,如果比较函数(comp)指示两个元素相等,则这两个元素的相对顺序是不确定的。这意味着即使两个元素在逻辑上是等价的,qsort不会保证它们在排序后的数组中的顺序。

sort

iota

decltype 

back_inserter

front_inserter

advance

remove, remove_if

http://www.dtcms.com/a/365974.html

相关文章:

  • 稳居全球TOP3:鹏辉能源“3+N” 布局,100Ah/50Ah等户储电芯产品筑牢市场优势
  • 【C++】Vector核心实现:类设计到迭代器陷阱
  • MySQL:表的约束上
  • C# 代码中的“熵增”概念
  • 单片机:GPIO、按键、中断、定时器、蜂鸣器
  • 《单链表经典问题全解析:5 大核心题型(移除元素 / 反转 / 找中点 / 合并 / 回文判断)实现与详解》
  • 【面试题】词汇表大小如何选择?
  • PS大神级AI建模技巧!效率翻倍工作流,悄悄收藏!
  • 本地化AI问答:告别云端依赖,用ChromaDB + HuggingFace Transformers 搭建离线RAG检索系统
  • OpenCV的阈值处理
  • ChartView的基本介绍与使用
  • shell编程从0基础--进阶 1
  • 如何高效记单词之:抓住首字母——以find、fund、fond、font为例
  • Linux `epoll` 机制的入口——`epoll_create`函数
  • Java并发编程中的CountDownLatch与CompletableFuture:同步与异步的完美搭档
  • 驱动增长的双引擎:付费搜索与自然搜索的终极平衡策略
  • Loot模板系统
  • helm应该安装在哪些节点
  • ABAQUS多尺度纤维增强混凝土二维建模
  • 微信小程序-day3
  • 【mac】macOS上的实用Log用法
  • 使用Navicat去批量传输数据库的表结构
  • fastlio配置与过程中遇到的问题
  • 51单片机----LED与数码管模块
  • C 语言标准输入输出库:`stdio.h` 的使用详解
  • 【WPS】WPSPPT 快速抠背景
  • Python学习笔记--使用Django修改和删除数据
  • 52.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--解决客户端调用接口404问题
  • 硬件:51单片机的按键、中断、定时器、PWM及蜂鸣器
  • Spring Boot HTTP状态码详解