C/C++ 标准模版库STL(持续更新版)
标准模版库STL
目录
算法库
栈
队列
向量
映射
列表
双向链表
集合
Iterator 送代器
<algorithm> 算法库
max, min 用于找出一组值中的最大值和最小值
swap 用于交换两个变量的值
sort 用于对一个范围内的元素进行排序
lower_bound, upper_bound 用于在已排序的容器中查找元素的下界和上界
unique(a,a+n)-a 用于在一个范围内删除相邻重复的元素,返回不重复元素的范围终点
Next_permutation 用于获取一个序列的下一个排列
Prev_permutation 用于获取一个序列的前一个排列
#include <iostream>
#include <algorithm>
#include <vector>using namespace std;int main() {vector<int> numbers = {5, 2, 8, 1, 3, 8, 4};// 查找元素auto it = find(numbers.begin(), numbers.end(), 3);if (it != numbers.end()) {cout << "Found: " << *it << endl;}// 排序sort(numbers.begin(), numbers.end());// 删除元素numbers.erase(remove(numbers.begin(), numbers.end(), 8), numbers.end());// 打印结果for (int num : numbers) {cout << num << " ";}return 0;
}
<stack> 栈
st.push() 将一个元素压入栈顶,即将一个新元素添加到栈的顶部
st.top() 返回栈顶元素的引用,但不会移除该元素。如果栈为空,访问栈顶元素是不安全的
st.pop() 移除栈顶元素,即将栈顶元素弹出,使得栈的大小减少一个元素
st.empty() 返回一个布尔值,表示栈是否为空。如果栈为空,返回 true,否则返回 false
st.size() 返回当前栈中元素的数量,即栈的大小
<queue> 队列
q.push() 将一个元素压入队列尾部,即将一个新元素添加到队列的尾部
q.front() 返回队列头部的元素的引用,但不会移除该元素。如果队列为空,访问队列头部元素是不安全的
q.pop() 移除队列头部的元素,即将队列头部元素弹出,使得队列中的元素数量减少一个
q.empty() 返回一个布尔值,表示队列是否为空。如果队列为空,返回 true,否则返回 false
q.size() 返回当前队列中元素的数量,即队列的大小
<vector> 向量
V[i] 访问向量 V 中的第 i 个元素,其中索引从 0 开始
v.push_back() 将一个元素添加到向量的末尾
V. insert() 在向量中的指定位置 it 处插入一个元素,可以是具体的值 value
v.size() 返回向量中元素的数量,即向量的大小
v.front() 返回向量的第一个元素的引用
v.back() 返回向量的最后一个元素的引用
v.empty() 返回一个布尔值,表示向量是否为空。如果向量为空,返回 true,否则返回 false
v.clear() 移除向量中的所有元素,使得向量为空
v.erase(it) 从向量中移除由迭代器 it 指向的元素
v.resize(n,m) 调整vector的大小为n,如果n比原来的大,则新增的部分都初始化为m
<map> 映射
map<int, int> a 创建一个名为 a 的映射,其中键和值都是整数类型。
m.find(x) 在映射 m 中查找键为 x 的元素,返回一个迭代器指向该元素。如果找不到,返回 m.end() 迭代器。
m.count(x) 返回映射 m 中键为`x 的元素的数量。由于映射中每个键只能有一个对应的值,所以这个函数的返回值要么是 0(未找到)要么是 1(找到)。
m.size() 返回映射中元素的数量,即映射的大小。
<list> 列表
li.front() 返回双向链表 li 中的第一个元素的引用。
li.pop_back() 移除双向链表 li 的最后一个元素。
li.pop_front() 移除双向链表 li 的第一个元素。
<deque> 双向链表
双端队列允许在两端(前端和后端)高效地插入和移除元素。
dq.push_back(value) 和 dq.push_front(value) 在后端或前端添加元素。
dq.pop_back() 和 dq.pop_front() 从后端或前端移除元素。
dq.back() 和 dq.front() 访问后端和前端元素。
dq.size() 返回元素数量。
dq.empty() 检查是否为空。
dq.clear() 移除所有元素。
dq.at(index) 访问特定索引处的元素。
dq.begin() 和 end() 返回迭代器。
dq.rbegin() 和 rend() 反向迭代器。
dq.erase(position) 移除指定位置的元素。
dq.insert(position, value) 在指定位置插入元素。
dq.swap(other) 交换两个双端队列的内容。
<set> 集合
insert(value):插入一个元素到集合中。插入后会自动排序,且不会插入重复元素。 erase(value):从集合中删除指定的元素。
find(value):查找给定元素是否存在于集合中,如果存在,返回指向该元素的迭代器,否则返回 end()。
size():返回集合中的元素数量。
empty():检查集合是否为空。
clear():移除集合中的所有元素。
begin() 和 end():返回迭代器,用于遍历集合。
lower_bound(value):返回第一个大于等于给定值的元素的迭代器。
upper_bound(value):返回第一个大于给定值的元素的迭代器。
equal_range(value):返回一个 pair,其中包含了与给定值相等的元素的范围。
#include <set>
#include <iostream>
using namespace std;int main() {set<int> mySet;mySet.insert(5);mySet.insert(3);mySet.insert(8);cout << endl;if (mySet.find(3) != mySet.end()) {cout << "3 在集合中." << endl;}return 0;
}
Iterator 送代器
这是几乎所有STL中遍历的抽象概念,送代器为一个vector、list、map、set中都可以用的指针,通常它可以指向第一个和下一个位置,如begin()和end()并使用++运算符递增指针移动到下一个元素。下面是一个示例:
#include <vector>
#include <iostream>
using namespace std;int main() {vector<int> numbers = {1, 2, 3, 4, 5};// 使用送代器遍历for (vector<int>::iterator it = numbers.begin(); it != numbers.end(); ++it) {cout << *it << " ";}return 0;
}
相关文章:
C/C++ 标准模版库STL(持续更新版)
标准模版库STL 目录 算法库 栈 队列 向量 映射 列表 双向链表 集合 Iterator 送代器 <algorithm> 算法库 max, min 用于找出一组值中的最大值和最小值 swap 用于交换两个变量的值 sort 用于对一个范围内的元素进行排序 lower_bound, upper_bound 用于在已排序的容器…...
ARM(实验二)
uart4.h #ifndef __H__ #define __H__#include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h"//RCC/GPIO/UART4章节初始化 void hal_uart4_init();//发送一个字符函数 void hal_put_char(const char str);//发…...
由“美”出发 听艺术家林曦关于美育与智慧的探讨
不久前,林曦老师与我们的老朋友「十点读书」进行了一次线上直播,有关林曦老师十余年的书法教学,和传统美育的心得,以及因此诞生的新书《无用之美》。 这一次的直播,由“美”的主题出发,延伸出美育…...
Serial与Parallel GC之间的不同之处是什么?
Serial GC(串行垃圾回收器)和Parallel GC(并行垃圾回收器)都是Java虚拟机(JVM)中用于进行垃圾回收的两种基本算法。它们在性能、资源利用和回收效率等方面存在一些不同之处。下面是它们之间的详细比较: 1.工作方式 Serial GC:它是一种单线程的垃圾回收器…...
GB28181设备接入侧如何对接外部编码后音视频数据并实现预览播放
技术背景 我们在对接GB28181设备接入模块的时候,遇到这样的技术诉求,好多开发者期望能提供编码后(H.264/H.265、AAC/PCMA)数据对接,确保外部采集设备,比如无人机类似回调过来的数据,直接通过模…...
【java】为什么文件上传要转成Base64?
文章目录 1 前言2 multipart/form-data上传3 Base64上传3.1 Base64编码原理3.2 Base64编码的作用 4 总结 1 前言 最近在开发中遇到文件上传采用Base64的方式上传,记得以前刚开始学http上传文件的时候,都是通过content-type为multipart/form-data方式直接…...
SCSS 学习笔记 和 vscode下载live sass compiler插件配置
1、下载livelive sass compiler插件并配置 // 在 已有代码 下面 添加下面 代码,一般刚刚下载打开最后一行是:// "liveSassCompile.settings.autoprefix": [],// 所以直接 把下面复制进去保存就行"liveSassCompile.settings.autoprefix&qu…...
CSS中的字体属性有哪些值,并分别描述它们的作用。
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ font-style⭐ font-weight⭐ font-size⭐ font-family⭐ font-variant⭐ line-height⭐ letter-spacing⭐ word-spacing⭐ font⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专…...
机器学习笔记之优化算法(十五)Baillon Haddad Theorem简单认识
机器学习笔记之优化算法——Baillon Haddad Theorem简单认识 引言 Baillon Haddad Theorem \text{Baillon Haddad Theorem} Baillon Haddad Theorem简单认识证明过程证明:条件 1 ⇒ 1 \Rightarrow 1⇒ 条件 2 2 2证明:条件 3 ⇒ 3 \Rightarrow 3⇒条件 1…...
HighTec工程用命令行编译
当工程中含有太多模型生成的代码的时候,如果修改了一部分代码,HighTec自带的编译器编译时间会非常的慢,有的需要半个小时甚至一个小时,这是因为每次修改之后HighTec都会从头重新检索更新,太浪费时间了,于是…...
【C语言】每日一题(找到所有数组中消失的数字)
找到所有数组中消失的数字,链接奉上。 这里简单说一下,因为还没有接触到动态内存,数据结构,所以知识有限,也是尽力而为,结合题库的评论区找到了适合我的解法,以后有机会,会补上各种…...
PostgreSql 备份恢复
一、概述 数据库备份一般可分为物理备份和逻辑备份,其中物理备份又可分为物理冷备和物理热备,下面就各种备份方式进行详细说明(一般情况下,生产环境采取的定时物理热备逻辑备份的方式,均是以下述方式为基础进一步研发编…...
鲲鹏916/920处理器性能比较
CPUKunpeng916Kunpeng920指令集Cotex-A75TaiShan-V110主频2.4GHz2.6GHz/3.0GHz核数3224/32/48/64CacheL1: 48 KB instruction cache and 32 KB data cache L2: 256 KB private per core L3: 32 MB L1: 64 KB instruction cache and 64 KB data cache L2: 512 KB private per co…...
《Go 语言第一课》课程学习笔记(八)
基本数据类型 Go 原生支持的数值类型有哪些? Go 语言的类型大体可分为基本数据类型、复合数据类型和接口类型这三种。 其中,我们日常 Go 编码中使用最多的就是基本数据类型,而基本数据类型中使用占比最大的又是数值类型。 整型 Go 语言的…...
管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——联选言
文章目录 第五节 联言+选言-摩根定理-非(A或B)=非A且非B,非(A且B)=非A或非B真题(2013-49)-联言+选言-摩根定理-非(A或B)=非A且非B,非(A且B)=非A或非B真题(2012-33)-联言+选言-摩根定理-非(A或B)=非A且非B,非(A且B)=非A或非B真题(2014-42)-联言+选言-摩根定理-非(A或B…...
CAS 一些隐藏的知识,您了解吗
目录 ConcurrentHashMap 一定是线程安全的吗 CAS 机制的注意事项 使用java 并行流 ,您要留意了 ConcurrentHashMap 在JDK1.8中ConcurrentHashMap 内部使用的是数组加链表加红黑树的结构,通过CASvolatile或synchronized的方式来保证线程安全的,这些原理…...
ChatGPT逐句逐句地解释代码并分析复杂度的提示词prompt
前提安装chrome 插件 AI Prompt Genius, 请参考 3 个 ChatGPT 插件您需要立即下载 你是首席软件工程师。请解释这段代码:{{code}} 添加注释并重写代码,用注释解释每一行代码的作用。最后分析复杂度。快捷键 / 选择 Explain Code 输入代码提…...
【Lua语法】算术、条件、逻辑、位、三目运算符
1.算术运算符 加减乘除取余: - * / % Lua中独有的:幂运算 ^ 注意: 1.Lua中没有自增自减(、–),也没有复合运算符(、-) 2.Lua中字符串可以进行算术运算符操作,会自动转成number 如:“10.3” 1 结果为11.3…...
Cygwin 配置C/C++编译环境以及如何编译项目
文章目录 一、安装C、C编译环境需要的包1. 选择gcc-core、gcc-g2. 选择gdb3. 选择mingw64下的gcc-core、gcc-g4. 选择make5. 选择cmake6. 确认更改7. 查看包安装状态 二、C、C 项目编译示例step1:解压缩sed-4.9.tar.gzstep2:执行./configure生成Makefile…...
回归预测 | MATLAB实现FA-BP萤火虫算法优化BP神经网络多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现FA-BP萤火虫算法优化BP神经网络多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现FA-BP萤火虫算法优化BP神经网络多输入单输出回归预测(多指标,多图)效果一览基本介绍程…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
