STL

发布时间 2023-04-15 12:11:18作者: ShadowAA

STL

Vector

定义:vectorv;

向数组的最后插入新元素 v.push_back(x);

向数组的最后删除一个元素 v.pop_back(x);

获取数组长度 v.size();

清空数组 v.clear();

返回指向开头元素的指针 v.begin();

返回指向末尾的下一个元素的指针 v.end();

建立一个二维数组 vectorv[N];

Set&multiset多重集合

优点:

自己会从小到大排好序

set 去重 multiset不去重

定义一个sets;

插入新元素 s.insert(x);

删除元素 s.erase(x);

查询元素x是否存在 s.find(x);

如果不存在 返回 s.end()

清空集合 s.clear();

返回指向开头元素的指针 s.begin();

返回指向末尾的下一个元素的指针 s.end();

迭代器 set::iterator it = st.begin();

Map

优点:

由{键、值}对组成的集合,以某种比较键大小关系的谓词进行排列。

DIY能力强。

定义 map<type1,type2>mp;

以type2排列。

使用起来和数组差不多。

清空映射关系 mp.clear();

Stack 栈

定义 stackst;

压入 st.push(x);

弹出 st.pop();

查询栈顶的元素 st.top();

查询栈是否为空 st.empty();

Queue 队列

定义 queueq;

返回队头元素 q.front();

返回队尾元素 q.back();

向队尾压入 q.push(x);

队头弹出队头元素 q.pop();

判断队伍是否为空 q.empty();

Priortty_queue 优先队列

定义 priority_queueq;

查询队头元素q.top();

向队列中加入一个元素 q.push(x);

从队头弹出队头 q.pop();

查询队列是否为空 q.empty();

优先队列如何按从小到大排序?

priority_queue<int,vector,greater>q;

Next_permutation全排列

next_permutation(a,last:a+n);

Lower_bound

二分查找

lower_bound()返回值是一个迭代器,返回指向大于等于key的第一个值的位置

lower_bound(a.begin(),a.end(),x);