STL容器

vector

startfinish指向范围,end_of_storage指向尾端
push_back()
检查是否有备用空间,如果有就构造元素,调整迭代器finish,如果不够,就扩充空间(重新配置、移动数据、释放原空间)
pos_back():将尾端元素拿掉
erase(first,last)
清除区间内不包括(last)的数据,原理是先把后面复制到前面,然后删除后面。
clear:用erase实现。
insert:在指定位置前插入元素,原理是把后面的数据移动到插入后的后面位置,然后插入。(实际操作稍微复杂点,以后再补)
高效的随机存取,但插入删除较慢。

list

环形双向链表
空白节点表示end(),下一个节点就是begin()
vector的迭代器是普通指针,但是list的指针不再是普通指针,因为它的空间并不是连续的。
push_front()/back()
pop_front()/back()
clear,清空
remove移除值为x的数。
unique删除连续相同的元素。
transfer[first,last)的元素移动到pos之前。(不是公开接口)
splice将连续范围的元素,从一个list移动到另一个list
排序使用了归并排序。
低效的存取,但是插入删除很快

deque

动态地以分段连续空间组合而成,维护整体连续的假象,并提供随机存取的接口
deque使用一小段连续空间map作为主控 ,map不够大的时候会,就必须配置新的更大的。

如何实现随机存取,首先根据大小算出在map上的步长,然后走到具体位置之后,在连续空间里直接O(1)存取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值