1.deque
STL源码剖析——deque的实现原理和使用方法详解
STL源码剖析】第四章 序列式容器 之 deque底层实现
这个有点厉害,不过没看完。。STL中的deque及源码实现 std::deque
核心为内存管理,对不连续的缓冲区的管理。
deque里面有一个比较有意思的函数insert,表示向某一个位置插入元素,然后insert的处理是追求元素个数移动最少:
- 该位置与最前面一个buffer的cur位置相同吗?相同则调用push_front;
- 该位置与最后面一个buffer的cur位置相同吗?相同则调用push_back;
- 否则说明插入的位置在中间,则计算该位置到起点的元素个数以及该位置到终点的元素个数,如果到起点的元素个数少,则将前面的元素搬移;如果到终点的元素个数少,则将后面的元素往后移。
2.stack
stack是只允许在一端进行插入和删除的数据结构,如果以deque为基础,可以很简单的实现stack。
push
和pop
操作就是在deque
的基础上完成的,直接调用的deque
的push_back()
和pop_back()
。
3.queue
队列是种FIFO的数据结构。
push
调用的是deque
的push_back()
,在尾端插入;
pop
调用的是deque
的pop_front()
,在队头删除。