deque(1)
2016-01-08 10:00
267 查看
deque(1)
---雨竹清风
一、deque的数据结构
deque是双端队列容器,是一个采用分块的线性结构进行存储。deque分成若干的deque块。deque块由map来管理,map是一段连续的内存空间。Map记录的是每一块的首地址,map是deque的管理者。deque有2个迭代器:M_start,M_finish。每个迭代器有四个变量:M_first,M_last,M_cur,M_node。M_first是指向deque块的首元素的位置,M_last指向deque块的末尾元素的位置,M_cur指向当前访问的元素的地址。M_node是存储map中的当前deque块的数据项的地址。
二、deque的迭代器
deque的迭代器是访问deque的指针,使用方式++,--;首先是指出访问的连续空间,再者,判断自己是否是处于边缘位置,若处于边缘位置,那么将跳到前一个或者后一个deque块中。
三、与vector的区别
1)两端都能够快速的插入元素和删除元素,vector在尾端插入比较快。
2)存取元素时,deque的内部结构会多一个间接过程,所以元素的存取和迭代器的速度要慢。
3)迭代器需要在不同的区块间跳转,所以必须是特殊的智能指针,非一般指针。
4)在对内存区块有所限制的系统中,deque可以包含更多的元素,因为它使用不止一块内存。因此,deque的max_size()可能更大。
std::deque (double-ended queue),在堆中保存内容,保存形式:
[堆1]
…
[堆2]
…
[堆3]
…
每个堆保存好几个元素,堆和堆之间用指针指向,可以在队列前面快速的添加删除元素。
使用deque的情况:
1)
需要在两端插入和删除元素
2)
无需引用容器内的元素
3)
要求容器释放不再使用的元素
deque不提供使用容量操作;deque直接提供函数,以提供完成头部元素的插入和删除。
---雨竹清风
一、deque的数据结构
deque是双端队列容器,是一个采用分块的线性结构进行存储。deque分成若干的deque块。deque块由map来管理,map是一段连续的内存空间。Map记录的是每一块的首地址,map是deque的管理者。deque有2个迭代器:M_start,M_finish。每个迭代器有四个变量:M_first,M_last,M_cur,M_node。M_first是指向deque块的首元素的位置,M_last指向deque块的末尾元素的位置,M_cur指向当前访问的元素的地址。M_node是存储map中的当前deque块的数据项的地址。
二、deque的迭代器
deque的迭代器是访问deque的指针,使用方式++,--;首先是指出访问的连续空间,再者,判断自己是否是处于边缘位置,若处于边缘位置,那么将跳到前一个或者后一个deque块中。
三、与vector的区别
1)两端都能够快速的插入元素和删除元素,vector在尾端插入比较快。
2)存取元素时,deque的内部结构会多一个间接过程,所以元素的存取和迭代器的速度要慢。
3)迭代器需要在不同的区块间跳转,所以必须是特殊的智能指针,非一般指针。
4)在对内存区块有所限制的系统中,deque可以包含更多的元素,因为它使用不止一块内存。因此,deque的max_size()可能更大。
std::deque (double-ended queue),在堆中保存内容,保存形式:
[堆1]
…
[堆2]
…
[堆3]
…
每个堆保存好几个元素,堆和堆之间用指针指向,可以在队列前面快速的添加删除元素。
使用deque的情况:
1)
需要在两端插入和删除元素
2)
无需引用容器内的元素
3)
要求容器释放不再使用的元素
deque不提供使用容量操作;deque直接提供函数,以提供完成头部元素的插入和删除。
相关文章推荐
- easyui知识累计.递增.
- UIPopoverController使用
- MornUI的List组件渲染和添加滚动条
- 使用equinox开发osgi
- [Morn UI系列教程]Morn资源命名规则
- Xcode 7.1, Build Settings,No Common Blocks备忘
- iOS开发中使用UILabel设置字体的相关技巧小结
- 0108 UIview 动画
- 黑马程序员——iOS 开发学习---循环结构及UI控件
- easyui combtree树默认展开
- 自定义Framework出现:Could not build module ‘xxx’的错误提示
- 1.21 关于UITableView(慢慢更新ing)
- leetcode之Unique Paths II
- 1005——Number Sequence
- UiToolBarDemo
- uinavigationitemdemo
- 腾讯经验分享:交互设计师如何写交互文案
- UE复文本编辑器
- UIScrollView的常用属性
- request 获取各种路径