C++STL学习笔记

关于 \(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\)
注意,\([]\) 为重载运算符

猜你喜欢

转载自www.cnblogs.com/leiyuanze/p/12347877.html