五一 DAY 6
TypeName 类型名
VariableName 变量名
Part 1 数据结构
函数库:# include < utility >
Pair 定义一个变量,它有两个元素 :pair.first pair.scecond,
这两个元素的类型可以不同
(类似于结构体)
函数库:#include < string >
定义一个字符串
a = qing bei b = xue tang
a+b = qing bei zao tang
//超过内存限制!
所以就用到了vector
Vector 原理: 倍长
Vector的内存长度是2 ,内存是连续的
演示过程
读入过程:
取数过程:
迭代器返回的是(下标),不是对应值
在指针上加*,得到值
支持自增运算
遍历 vector :
STL 要求 set 必须有序
Set类型可以定义为任何可以排序的类型
Set 的底层使用红黑树这个数据结构来维护集合。
( 一种很麻烦的平衡树,
平衡的树结构
每个节点左右子树节点数差不多
)
返回的大部分是迭代器
set具有鲁棒性
内存不连续
双向迭代器(建议百度)
常见操作:
set 不会出现 1 2 2 3 3 4 只能是1 2 3 4
multiset 可以 1 2 2 3 3 4
比如:1 2 2 3 3 4
我们删除 2 就变为: 1 3 3 4
想只删一个数字,就删去它他的迭代器
一维数组一定不会支持这种操作,一维数组的下标只能是数字
然鹅 map可以实现
把第一维度作为下标,值是第二维 ,第一维度必须可排序
栈 [ FILO ] first in last out
队列 [ FIFO ] first in first out
优先队列 本质是大根堆
要做小根堆怎么办??
注意:
1.大于比较 小根堆 (小于比较 大根堆)
2.
第一个 int 是priority_queue的类型
第二个 vector<int> 是存储数据的结构 一般用vector
第三个 cmp 是比较函数
3.Priority Queue 重载 < 运算符
Cmp 重载()运算符
Map 重载[ ]
4.等价于
5.优先队列比 set 慢
Part 2 Algorithm(函数)
左闭右开
按照输入的顺序倒序输出
Unique
对已经拍好顺序的数组去重
找到a的下一个排列
(是否还能找到下一个排列)
所以可以实现全排列QVQ
比较次数不会超过 。。han ning ju li
Fill函数可以赋值任何数
可以作为memset的替换
但是没有memset快
O(n)
左闭右开
4 放到该放位置,比它小的在前,比它大的在后,但不保证顺序
随机重排
随机种子
实现得到随机排列
下午考试:
五一 考试二
暴力出奇迹!!!rank 4!!!
扩充知识:
析构:释放内存
构造函数:
类名
操作
赋值构造函数
IN THE END
咳咳咳你看这个网站它又大又圆