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神经网络多输入单输出回归预测(多指标,多图)效果一览基本介绍程…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...