VECTOR
vector本身可以作为数组使用,而且一些元素个数不确定的场合可以很好地节省空间。
SET
set的主要作用是自动去重并按升序排序,因此碰到需要去重但是却不方便直接开数组的情况,可以尝试用set解决。
另外 C++中增加了unordered_set,以散列代替set内部的红黑树实现,使其可以用来处理只去重但不排序的需求,速度比set要快得多。
STRING
只能使用CIN COUT 输入输出
MAP
他可以将任何基本类型映射到任何基本类型,可以建立string型到int型的映射。
map会以键从小到大的顺序自动排序。这是由于map内部是使用红黑树进行实现的。
需要建立字符串与整数之间映射的题目,使用map可以减少代码量
判断大整数或者其他类型数据是否存在的题目,可以把map当bool数组使用
另外 C++中增加了unordered_map,以散列代替map内部的红黑树实现,使其可以用来处理只去重但不排序的需求,速度比map要快得多。
QUEUE
适用于广度优先搜索的实现
STACK
可以用来模拟实现递归,防止内存超出。
PAIR
可以将pair看作一个内部有两个元素的结构体,而且这两个元素的类型可以自己指定。
pair比较大小时,会先比较first,如果first相同,再比较second。
头文件algorithm
max() 返回最大值
min() 返回最小值
abs() 取绝对值
swap() 交换元素
reverse()翻转元素
fill() 把区间内某一段赋值
sort() 排序可以编写一个cmp函数,用来指示按什么顺序排
lower_bound(first, second, val) 寻找在数组或容器的(first,last)范围第一个值大于等于val的元素的位置,如果是数组,返回该位置的指针,如果是容器,返回该位置的迭代器。
upper_bound(first, second, val)寻找在数组或容器的(first, second)范围内第一个大于val的元素的位置,如果是数组,返回该位置的指针,如果是容器,返回该位置的迭代器。
今天的其他笔记
想把一个整型数组,按照字典序排列 可以使用sort函数,自己写一个特判函数,代码如下
static bool cmp(int x, int y) { string sx = to_string(x), sy = to_string(y); return sx + sy > sy + sx;//例如 20 2 20+2 = 202 < 2+20 = 220 }
是用sort函数对pair排序时,默认按照first进行排序,如果first相同的话,则按照second排序。