关于 \(STL\)
我认为是懒人行为,但它的魅力让我选定了做懒人······
只是简单应用,基本操作,因为我打码时总是忘了一些基本操作怎么写
\(sort\)
调用头文件 \(algorithm\)
一般写法 \(sort(a + 1 , a + n + a , cmp)\)
其中 \(a\) 是待排序数组(或结构体),\(cmp\) 是比较函数,\(a + 1,a + n + 1\)指从数组第1个元素排序 \(n + 1 - 1\) 个元素,也就是到第 \(n\) 个
重点是 \(cmp\) 的写法
inline bool cmp(int x , int y) {return x < y;}
此即从小到大排序,其余排序规则触类旁通
结构体排序
struct node{int x , int y}a[N + 5];
例如按 \(a.x\) 为关键字
则 \(cmp\) 如此
inline bool cmp(node a , node b) {return a.x < b.x;}
容易触类旁通
注 : \(sort\) 也可排序 \(vector\)
规则同理,只需改成 \(sort(a.begin() , a.end() , cmp)\) 即可
\(vector\)
本人用来取代链表的,不能完全取代,就冲着不定长来的
不定长数组 \(vector\) 的一大特点就是不定长
调用头文件 \(vector\)
因为它是容器,这里给出定义方式
#include<vector>
vector<int> a
此时定义了 \(int\) 类型的不定长数组 \(a\) , 注:\(a\) 是数组
基本操作
a.size(); //读取它的大小
a.empty(); //返回bool值,空则true,否则false
a.push_back(x); //在尾端添加一个元素x
a.pop_back(); //在尾端删除一个元素
这些是常用的,其它略,下同
\(vector\) 可直接在有效范围内赋值
其排序方法见 \(sort\)
\(map\)
映射,不支持重复关键字
调用头文件 \(map\)
给出定义
#include<map>
map<string,int> mp
这里定义了以 \(string\) 类型为关键字且其值为 \(int\) 类型的映射mp
可以赋值,如 \(mp["July"] = 7\)
注意,\([]\) 为重载运算符