参考:https://blog.csdn.net/TWRenHao/article/details/123483085
一、vector
vector具体用法详情点这里
优点:
支持随机访问
CPU高速环缓存命中率很高
缺点:
空间不够,便需要增容。而增容代价很大,还存在一定的空间浪费。
头部和中间插入删除时时间复杂度为O(N),效率低。
二、list
list具体用法详情点这里
优点:
按需申请释放空间即可
任意位置的插入和删除数据都是O(1),效率高。
缺点:
不支持随机访问
CPU高速缓存命中率低
三、deque(双端队列)
设计结构:
使用固定数组大小的buff(一般8~10),再设计一个中控数组进行管理(指针数组)
具体深入到四个迭代器实现图如下:
优点:
很适合头插入,尾插入,头删除和尾删除,所以最合适做stack(栈)和queue(队列)的适配器
缺点:
中间插入数据很麻烦,效率不高(最大的硬伤)
deque是一种折中的方案设计,不够极致!随机访问不及vector,任意位置插入删除不及list。
四、何为适配器(配接器)?
转换——并不是直接实现的,封装其他容器,包装转换实现出来。
看到这里,聪明的友友可能已经发现了,那谁是适配器而不是像vector和list一样的容器呢?
没错!就是栈(stack)和队列(queque)