C/C++ 标准模版库STL(持续更新版)

标准模版库STL

<algorithm> 算法库

max, min用于找出一组值中的最大值和最小值

swap用于交换两个变量的值

sort用于对一个范围内的元素进行排序

lower_bound, upper_bound用于在已排序的容器中查找元素的下界和上界

unique(a,a+n)-a用于在一个范围内删除相邻重复的元素,返回不重复元素的范围终点

Next_permutation用于获取一个序列的下一个排列

Prev_permutation用于获取一个序列的前一个排列

<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 指向的元素

<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,其中包含了与给定值相等的元素的范围。

cpp 复制代码
#include <set>
#include <iostream>
using namespace std;

int main() {
    set<int> mySet;

    mySet.insert(5);
    mySet.insert(3);
    mySet.insert(8);

    cout << "Set contains:";
    for (int num : mySet) {
        cout << " " << num;
    }
    cout << endl;

    if (mySet.find(3) != mySet.end()) {
        cout << "3 在集合中." << endl;
    }

    return 0;
}

Iterator 送代器

cpp 复制代码
#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;
}
相关推荐
SilentSamsara1 小时前
生成器完全指南:`yield` 与惰性求值的工程价值
linux·开发语言·python·算法·机器学习·青少年编程
jieyucx8 小时前
Go语言深度解剖:Map扩容机制全解析(增量扩容+等量扩容+渐进式迁移)
开发语言·后端·golang·map·扩容策略
顾温8 小时前
default——C#/C++
java·c++·c#
凉茶钱9 小时前
【c语言】动态内存管理:malloc,calloc,realloc,柔性数组
c语言·c++·vscode·柔性数组
脏脏a9 小时前
【C++模版】泛型编程:代码复用的终极利器
开发语言·c++·c++模版
island13149 小时前
【C++仿Muduo库#3】Server 服务器模块实现上
服务器·开发语言·c++
散峰而望9 小时前
【算法竞赛】C/C++ 的输入输出你真的玩会了吗?
c语言·开发语言·数据结构·c++·算法·github
小龙报9 小时前
【C语言】内存里的 “数字变形记”:整数三码、大小端与浮点数存储真相
c语言·开发语言·c++·创业创新·学习方法·visual studio
yaki_ya9 小时前
yaki-C语言:从概念基础到内存解析---数组(array)完全指南
java·c语言·算法
深耕AI9 小时前
【VS Code避坑指南】点击Python图标提示“没有Python环境”,选择安装uv后这堆输出到底是什么意思?
开发语言·python·uv