deque(1)

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直接提供函数,以提供完成头部元素的插入和删除。

 

      

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值