STL常用基础模板

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)的所有元素,参数也是指针变量。

常用函数

reverse(z+1,z+n+1);//翻转z[1]~z[n]
sort(z+1,z+n+1);//z数组排序
int m=unique(z+1,z+n+1)-z-1;//对z去重,需要提前排序
int x=lower_bound (z+l,z+n+1,r)—z;//z[1]-z[n]中>=r的数第一次在哪里出现
int y=upper_bound (z+1,z+n+1,r)-z;//z[1]-z[n]中>r的数字第一次在哪里出现
random_shuffle(z+1,z+n+1);//随机打乱z[1]~z[n]

排列函数

posted @ 2022-09-19 20:16  DAIANZE  阅读(78)  评论(0编辑  收藏  举报