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

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;
}

http://www.lryc.cn/news/129595.html

相关文章:

  • ARM(实验二)
  • 由“美”出发 听艺术家林曦关于美育与智慧的探讨
  • Serial与Parallel GC之间的不同之处是什么?
  • GB28181设备接入侧如何对接外部编码后音视频数据并实现预览播放
  • 【java】为什么文件上传要转成Base64?
  • SCSS 学习笔记 和 vscode下载live sass compiler插件配置
  • CSS中的字体属性有哪些值,并分别描述它们的作用。
  • 机器学习笔记之优化算法(十五)Baillon Haddad Theorem简单认识
  • HighTec工程用命令行编译
  • 【C语言】每日一题(找到所有数组中消失的数字)
  • PostgreSql 备份恢复
  • 鲲鹏916/920处理器性能比较
  • 《Go 语言第一课》课程学习笔记(八)
  • 管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——联选言
  • CAS 一些隐藏的知识,您了解吗
  • ChatGPT逐句逐句地解释代码并分析复杂度的提示词prompt
  • 【Lua语法】算术、条件、逻辑、位、三目运算符
  • Cygwin 配置C/C++编译环境以及如何编译项目
  • 回归预测 | MATLAB实现FA-BP萤火虫算法优化BP神经网络多输入单输出回归预测(多指标,多图)
  • 【100天精通python】Day39:GUI界面编程_PyQt 从入门到实战(下)_图形绘制和动画效果,数据可视化,刷新交互
  • Java课题笔记~ Ajax
  • 调整mysql 最大传输数据 max_allowed_packet=500M
  • 【工具】 删除Chrome安装的“创建快捷方式”
  • windows上的docker自动化部署到服务器脚本
  • VoxWeekly|The Sandbox 生态周报|20230814
  • Aurora 8B/10B
  • 如何关闭“若要接收后续google chrome更新,您需使用windows10或更高版本”
  • python中使用xml快速创建Caption和URL书签管理器应用程序
  • 分类预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机多输入分类预测
  • Vue中使用v-bind:class动态绑定多个类名