清北学堂(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

posted @ 2019-05-03 10:53  _Alex_Mercer  阅读(169)  评论(0编辑  收藏  举报