C++语法STL语法
常用STL结构
一些常用的STL可以帮我们直接实现数据结构,让算法更容易实现。
-
vector
——向量、数组 -
pair
——元组 -
queue
——队列 -
stack
——栈 -
priority_queue
——优先队列 -
unorder_map
——哈希表(相比map
查找更快一些) -
map
——字典 -
set
——集合
STL用法总结
STL的引入
#include<vecotr>
#include<queue>
#include<stack>
#include<priority_queue>
#include<unorder_map>
#include<set>
vector
向量、数组
vector
的定义
vector<int> a;
vector<long long> a;
vector<string> a;
vector<double> a;
// ......
vector
常用方法
vector<int> a;
a.push_back(1); //往vector里面放数字,相当于python的append
a.size(); //获取vector的元素个数
a.pop_back(); //删除尾元素
a[index]; //获取下表为index的元素
pair
元组
pair
的定义
const int N = 1e5 + 10;
pair<int, int> a[N];
pair<int, string> a[N];
// ......
pair
的使用
a[index].first; //获取下标为index的第一个元素
a[index].second; //获取下标为index的第二个元素
// 赋值即可
queue
队列
queue
的定义
queue<int> q;
queue<long long> q;
queue<double> q;
queue
常用方法
queue<int> q;
q.push(1); //在队尾插入一个元素
q.pop(); //删除对头、不返回值
q.size(); //返回队列中元素个数
q.empty(); //如果为空范围true,不空返回false
q.front(); //返回对头元素
stack
栈
stack
的定义
stack<int> s;
stack<string> s;
stack
常用方法
stack<int> s;
s.push(); //元素入栈
s.top(); //返回栈顶元素
s.pop(); //弹出栈顶元素
s.size(); //返回栈的长度
s.empty(); //是否为空
priority_queue
优先队列,会排序
priority_queue
的定义
priority_queue<int> q;
priority_queue
常用方法
q.push(1); //元素入列
q.top(); //对头元素
q.pop(); //元素出列
unorder_map
哈希表——使用查找频率高,几乎O(1)!
unorder_map
的定义
unorder_map<int, string> m;
// 前面的int 是 key、string 是value
unorder_map
使用
unorder_map<string, int> m;
m['num1'] = 1;
string n = "cch";
int k = 123;
m[n] = k;
map
字典
map
的定义
unorder_map<int, string> m;
// 前面的int 是 key、string 是value
map
使用
unorder_map<string, int> m;
m['num1'] = 1;
string n = "cch";
int k = 123;
m[n] = k;
set
集合
set
的定义
set<int> s;
set
常用方法
s.begin() //返回set容器的第一个元素
s.end() //返回set容器的最后一个元素
s.clear() //删除set容器中的所有的元素
s.empty() //判断set容器是否为空
s.size() //返回当前set容器中的元素个数