动态增长的数组
底层
数组,支持动态扩充
在某一个点上,需要在内存的别的地方找到空间,进行扩充
扩充方式,当到达了一个阈值,在内存中找到另一个空间,进行成倍增长
sizeof vector为12
内部有三根指针,start end end_of_storage
两倍增长的原理
如果finish和end不等,说明capacity还没满,直接插入
如果相等了
就要重新分配
再重新分配中,再次检查了finish和end是否相等 为什么?
因为这个insert aux函数同时被其他的调用了
两倍成长,之后,先进行拷贝,再插入新的元素,最后将后序的元素拷贝过来(同理,因为insert也调用了此函数,所以需要将后面的拷贝过来)
vector的iterator
因为是连续空间,所以不用设计的和list的迭代器一样写成一个class,用指针就可以了
而接收到该萃取的时候,萃取机接收到 T*的类型,走入偏特化的类型
gnu c 4.9
sizeof仍然是12 还是三个指针
这里的public继承没道理,因为public代表着一种is a的关系
这里impl只是要用到allcator的一种功能,所以应该用private继承