P2
STL 六大部件 :
容器
分配器
算法
迭代器
适配器
仿函数
count_if 查找条件下的值
容器不一定是连续的 比如链表
容器序列 : 连续式 关联式 (C11 unorder con (hash_table))
连续式: Array ( 无法扩充)
vector (前端无法改变,会自动扩充)
deque(双端队列)
List(容器默认是双向链表) (指针在32 位上占位4个字节)
forward-list 单项列表
对于需要大查找使用 的数据结构 set multiset 底部实现是红黑树
set 和map 区别在于一个 是 key 就是 value
map 是两个 key-value
散列表 冲突处理 Separate Chaining
array test
必须指明大小 和 类型
vector test
vector 扩展 是 2 被扩展
find 全局函数
deque 是分段连续的 ,给人的连续是假象 ,双端队列不能随机访问,deque 本身灭有 sort 需要调用全局排序
multiset
multimap
hash_table
元素的个数 大于等于篮子 就要扩充(经验法则)
==========================================
第二次记录
分配器
oop(将数据和方法 封装到一起) gp (把数据 和方法分开来)
操作符重载
四个操作符 不能重载 :: . .*
链表模板 (迭代器类似于指针)
1 *
2 -> 必须重载
函数模板
有实参推导 < 作用在 b 上 然后 就会去找 ston 有没有重载这个 stone的 < 号
特化
特化 例子
偏特化 (局部特化)
operator new () 和malloc ()
operator new 最终都会调用 malloc 代码如下
malloc 分配内存
分配器最重要两个函数
allocte 和 dealocate
GC2.9
alloc 在头文件<stl_alloc.h>
容器
所有容器都有一个 iterator (模拟指针)
P13没看懂 https://www.bilibili.com/video/BV1db411q7B8?p=14