deque(1)

来源:互联网 发布:证券时报股市大数据 编辑:程序博客网 时间:2024/06/06 08:28

deque(1)

---雨竹清风

一、deque的数据结构

deque是双端队列容器,是一个采用分块的线性结构进行存储。deque分成若干的deque块。deque块由map来管理,map是一段连续的内存空间。Map记录的是每一块的首地址,mapdeque的管理者。deque2个迭代器:M_start,M_finish。每个迭代器有四个变量:M_first,M_last,M_cur,M_nodeM_first是指向deque块的首元素的位置,M_last指向deque块的末尾元素的位置,M_cur指向当前访问的元素的地址。M_node是存储map中的当前deque块的数据项的地址。

 

 deque(1) - 雨竹清风 - 雨竹清风的博客

二、deque的迭代器

deque的迭代器是访问deque的指针,使用方式++--;首先是指出访问的连续空间,再者,判断自己是否是处于边缘位置,若处于边缘位置,那么将跳到前一个或者后一个deque块中。

三、与vector的区别

1)两端都能够快速的插入元素和删除元素,vector在尾端插入比较快。

2)存取元素时,deque的内部结构会多一个间接过程,所以元素的存取和迭代器的速度要慢。

3)迭代器需要在不同的区块间跳转,所以必须是特殊的智能指针,非一般指针。

4)在对内存区块有所限制的系统中,deque可以包含更多的元素,因为它使用不止一块内存。因此,dequemax_size()可能更大。

 

std::deque double-ended queue,在堆中保存内容,保存形式:
[
1]

[
2]

[
3]

每个堆保存好几个元素,堆和堆之间用指针指向,可以在队列前面快速的添加删除元素。

 

使用deque的情况:

1)   需要在两端插入和删除元素

2)   无需引用容器内的元素

3)   要求容器释放不再使用的元素

 

deque不提供使用容量操作;deque直接提供函数,以提供完成头部元素的插入和删除。

 

      

 

 

 

0 0
原创粉丝点击