C++ STL库的使用

Posted by hebicheng on April 28, 2021

本文简要总结了在刷题和编程过程中常常用到的STL库的一些数据结构和算法。

一. 容器

1. stack

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stack>
//定义
stack<int> st;
//stack拥有的一些方法
//堆栈为空则返回真
st.empty() 
//移除栈顶元素
st.pop() 
//在栈顶增加元素
st.push() 
//返回栈顶元素
st.top() 
//返回栈中元素数目
st.size() 

2. vector

(1) 初始化方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <vector>

//初始化
vector<int> v;
//初始化大小
vector<int> v(n);
//初始化值
vector<int> v(n, value);
vector<int> v {1,2,3,4,5};
vector<int> v={1,2,3,4,5};
//使用vector初始化
vector<int> v2;
vector<int> v(v2);
vector<int> v = v2;
vector<int> v(v2.begin(), v2.end());
//二维数组初始化
vector<int, vector<int>> v_2d(m, vector<int >(n))

(2)常用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <vector>

vector<int> v;
//在容器最后新加一个元素
v.push_back();
//在iterator前新加一个元素
v.push_back(v.begin(), x);
//在iterator前新加一个元素
v.push_back(v.begin(), x);
//删除向量中迭代器指向元素
v.erase(iterator it);
//删除向量中[first,last)中元素
v.erase(iterator first,iterator last);
//删除向量中最后一个元素
v.pop_back();
//清空向量中所有元素
v.clear();
//判断是否为空
v.empty();
//数组大小
v.size();
//返回pos位置元素的引用
reference at(int pos) 
//返回首元素的引用
v.front();
//返回尾元素的引用
v.back();
//返回向量头指针,指向第一个元素
v.begin();
//返回向量尾指针,指向向量最后一个元素的下一个位置
v.end();
//反向迭代器,指向最后一个元素
v.rbegin();
//反向迭代器,指向第一个元素之前的位置
v.rend();

3. map

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <map>
//初始化
map<int, int> m;
//插入元素
m.insert(pair<int,int>(1,10))
m[1] = 1
//删除元素
it=Map.begin();  
m.erase(it); //通过迭代器删除 
m.erase(k); //通过键值删除
m.clear()
m.erase(m.begin(), m.end())
//键值对数量
m.size()

4. queue

1
2
3
4
5
6
#include <queue>
//初始化
queue<int, int> q;
//方法基本与stack一致
//还可以使用优先队列
priority_queue<T>q;

二. 算法

1. sort

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <algorithm>
//数组排序
int a = {1,2,3,4,5}
sort(a, a + 5)
//vector排序
vector<int > a{1,2,3,4,5};
sort(a.begin(), a.end())

//以上排序默认是从小到大,自定义排序需要指定比较函数

bool cmp(T v1, T v2){
    return v1 > v2;
}

vector<T> a{1,2,3,4,5};
sort(a.begin(), a.end(), cmp)

原创作品,转载请注明来源 https://hebicheng.github.io