清北学堂(2019 5 3) part 6
今天讲STL
1.pair——<algorithm>
声明形如pair<int,int> x;(不是int也可以),表示x有前后两个成员,都是int类型,调用时写x.first(second);
对pair声明的变量可以不自定义cmp函数,先按照pair中第一个元素优先排序,再按第二个,即第一个元素相同时对第二个元素排序,
同时pair支持这种操作:pair<pair<int,int>,int>;
2.vector——<queue>/<vector>
基本函数:
3.iterator(迭代器)——<vector>
4.set——<set>
STL集合,使用...红黑树(啥?)维护的集合,保证元素有序,且无重复元素
基本函数:
用结构体时需在结构体中写个重载运算符,来定义排序变量
5.map——<map>
可以进行类似以下操作:
#include<bits/stdc++.h> map<string,int> a; a["cxk"]=233; using namespace std; int main(){ ... }
简单来说就是用前面定义的类型指向个后面定义的类型
6.stack,queue(它们操作很像)——前者<stack>,后者<queue>
学过不解释
7.sort(学过)——<algorithm>
sort可以根据迭代器排序
8.unique,fill——<algorithm>
unique:去重函数,只能用于排过序的数组,
fill:将某一范围的元素全部覆盖为指定元素
9.next_permutation——<algorithm>
形如next_permutation(a+1,a+n+1);
即为判断a[1]到a[n]的某排列的是否存在下一个排列,按字典序排列,
10.binary_search——<algorithm>
官方二分,需要数据有序
11.nth_element——<algorithm>
将数列分成某个元素之前,某个元素,某个元素之后三部分,即用指定数据将数列分成两部分(不包括数据本身)
12.srand与rand——<algorithm>
在noip的杀手锏
srand定义随机种子,rand根据随机种子算出其值,然而直接输出只能输出41
所以一般这么写srand(time(0));
time——<ctime>
今天东西好少a