deque:逻辑上连续,物理上分段的vector数组,随机访问,作为底层特殊容器的实现
deque:中控(指针数组)+缓冲
map:中控,存放缓冲区的地址
buffer:缓冲数组
iterator:迭代器
迭代器中的四个指针
(node 车厢, first 车厢第一个位置,last 车厢最后一个位置,cur 车厢内当前位置)
T* cur,缓冲区当前的结点
T* first,缓冲区的第一个结点
T* last,缓冲区最后一个结点(如果是finish,那就是最后一个空间的最后一个元素的下一个位置)
T** node,缓冲区的标记位置
template<class T, class Bef, class Ptr>
class DequeTyerator{
public:
Ref operator*(){
return *cur;
}
self& operator++(){
//如果中控没满,开辟一个新的缓冲区,将缓冲区的指针放入中控
cur++;
//如果中控满了,开辟一个新的中控空间,将原中控里的指针拷贝进来
if(cur == last){
node++;
first = *node;
last = first + bufferlen;
cur = first;
}
return *this
}
}
template<class T>
class Deque{
public:
Iterator begin(){
return _start;
}
}