C++STL容器之deque

类型:序列式容器

底层数据结构:一个map(中央控制器, 连续内存空间, 存储缓冲区的地址) + 多个array(缓冲区)

查询速度:O(1), 随机存取,常数时间, 略大于vector的O(1)

插入速度:在头部和尾部插入时间复杂度为O(1), 中间位置插入元素时间复杂度小于vector的O(n)

能否扩容:能

扩容方式:定义时在堆上申请两块连续的空间, 一块用于作中央控制器map的存储实现, 存储指向缓冲区的指针, 一块用于作缓冲区, 可指定大小, 默认为512字节, 需要在头部和尾部插入元素时, 会申请新的缓冲区, 可指定大小, 默认为512字节, 将新元素存储在缓冲区内, 扩容时不需要重新申请内存, 拷贝元素, 释放原容器内存

适用情形:容器两端频繁插入删除, 需要支持随机访问

特别的该容器重载[]运算符

接口:提供了vector几户相同的接口, 相较于vector, 其在两端的操作效率能与list匹敌, 也支持随机访问, 在内存使用方面比vector更具有效率, 但是其迭代器操作实现复杂, 自身数据结构设计也比较复杂

posted @ 2020-08-24 12:06  DNoSay  阅读(178)  评论(0编辑  收藏  举报