STL模板:
堆
头文件:#include<queue>
大根堆:priority_queue<int> q;
小根堆:priority_queue<int,vector<int>,greater<int> > q;
操作:
q.top()//取得堆顶元素,并不会弹出
q.pop()//弹出堆顶元素
q.push()//往堆里面插入一个元素
q.empty()//查询堆是否为空,为空则返回1否则返回0
q.size()//查询堆内元素数量
队列
头文件:#include<queue>
定义:queue<typename> name;//queue<数据类型> q;
操作:
q.front()//访问队头元素
q.back()//访问队尾元素
q.push()//插入元素
q.pop()//弹出元素
q.empty()//询问队列是否为空
q.size()//询问队列元素个数
栈
头文件:#include<stack>
定义:stack<typename> name;
操作:
push()//入栈
top()//取栈顶
pop()//出栈,弹出栈顶元素
empty()//检测stack是否为空,返回true则空,false则非空
size()//返回stack内元素的个数
双向链表list
头文件:#include<list>
定义: list<typename> name;
操作:
list<int>a(n) //声明一个n个元素的列表,每个元素都是0
list<int>a(n, m) //声明一个n个元素的列表,每个元素都是m
list<int>a(first, last) //声明一个列表,其元素的初始值来源于由区间所指定的序列中的元素,first和last是迭代器
list<int>b{1, 2, 3, 4};
b.resize(2);
list中输出元素:1,2
list<int>b{1, 2, 3, 4};
b.resize(6);
list中输出元素:1,2,3,4,0,0
list<int>b{1, 2, 3, 4};
b.resize(6,9);
list中输出元素:1,2,3,4,9,9
向量(vector)
头文件: #include<vector>
定义:
vector<int> ve1;
vector<int> ve2(7);//定义大小,int默认初始化是0
vector<int> ve3(10,1);//大小10 + 初始1
操作:
push_back():在vector后面添加一个元素x,时间复杂度为o(1)。
pop_back():删除vector的尾元素,时间复杂度为o(1)。
size():获得vector中元素的个数,时间复杂度为o(1)。
clear():用来清空vector中的所有元素,时间复杂度为o(N)。
insert():insert(it, x)用来向vector的任意迭代器it(这是一个指针变量)处插入一个元素x,时间复杂度为o(N)。
erase():它有两种用法:
删除单个元素,erase(it)即删除迭代器为it处的元素;
删除一段区间内的所有元素,erase(first, last)即删除[first, last)的所有元素,参数也是指针变量。
标签:常用,头文件,STL,复杂度,元素,list,vector,include,模板
From: https://www.cnblogs.com/DAIANZE/p/16708923.html