deque(1)
来源:互联网 发布:证券时报股市大数据 编辑:程序博客网 时间:2024/06/06 08:28
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(1)
- PTA 4-1 Deque
- 4-1-Deque
- C++ STL_(1)deque
- deque
- deque
- deque
- deque
- deque
- deque
- deque
- deque
- deque
- deque
- deque
- deque
- <deque>
- deque
- vector(1)
- Bitmap
- vector(2)
- vector(3)
- vector(4)
- deque(1)
- deque(2)
- JAVA反射机制
- class [Ljava.lang.String; 和class java.lang.String; 的区别
- IOS 去空格处理 特殊字符处理
- JAVA反射机制
- Linux传文件和编译文件,运行文件
- 动态(程序运行时)生成枚举类型
- 修改文件的默认权限:umask