【STL】Deque - 双向队列

Deque简介

Deque是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。允许快速地访地随机访问,但是和vector这种将所有对象保存在一块连续的内存块不同,Deque是采用多个连续的存储块,并且在一个映射结构中保存对这些块及顺序的跟踪。向deque两端添加或删除元素的开销很小。它不需要重新分配空间,所以向末端增加元素相比vector更有效。

Deque更像是对vector和list优缺点的结合,是处于两者之间的一种容器。

特点:

(1)方便随机访问,支持[]操作符和deque.at();

(2)可以在内部进行插入和删除操作;

(3)可以在两端进行push、pop;

(4)相对于vector占用更多的内存

Deque和Vector很像,Deque允许在容器头部快速的插入和删除,就像在尾部一样

image

Deque的类方法

1.Constrcutors:构造一个新双向队列

deque();      // 创建一个空的双向队列
deque(size_type size);   //创建一个大小为size的双向队列
deque(size_type num,const TYPE &val);   // 放置num个val拷贝到队列中
deque(const deque &from);           // 从from创建一个与from内容一直的双向队列
deque(input_iterator start,input_iterator end);   // 从start到end创建一个队列,保存从start到end的元素

2.Operators:比较和赋值双向队列

// 访问指定位置的元素
operators[]      

3.assign():设置双向队列的值

// start和end指示的范围为双向队列赋值
void assign(input_iterator start,input_iterator end);
// 设置成num个val
void assign(Size num,const TYPE &val);

4.at():返回制定的元素

5.back():返回最后一个元素

6.begin() : 返回第一个元素的迭代器

// 返回一个迭代器,指向双向队列的第一个元素
interator begin();     

7.clear():删除所有元素

8.empty():判断deque是否为空

9.end():返回指向尾部的迭代器

10.erase():删除一个元素

// 删除pos的位置上的元素
iterator erase(iterator pos);     

// 删除start和end之间所有的元素
iterator erase(iterator start,iterator end);

11.front():返回第一个元素的引用

12.get_allocator(): 返回双向队列的配置器

13.insert():插入一个元素到双向队列中

// pos前插入num个val值
iterator insert(iterator pos,size_type num,const TYPE &val);

// 插入从start带end范围内的元素到pos前面
void insert(iterator pos,input_iteraotr start,input_iterator end);

14.max_size():返回双向队列能容纳的最大元素个数

15.pop_back():移除尾部的一个元素

16.pop_front():移除头部的一个元素

17.push_back():在尾部加入一个元素

18.push_front():在头部加入一个元素

19.rbegin():返回指向尾部的逆向迭代器

20.rend():返回指向头部的逆向迭代器

21.resize():改变双向队列的大小

22.size():返回双向队列中元素的个数

23.swap():和另一个双向队列交换元素

// 交换target和现双向队列中元素
void swap(deque &target);







参考文章:C++_标准模板库(STL) - Deque

posted @ 2022-09-19 23:02  Emma1111  阅读(50)  评论(0编辑  收藏  举报