C++基础:STL之双向队列deque
发布日期:2021-06-30 20:20:27 浏览次数:2 分类:技术文章

本文共 2280 字,大约阅读时间需要 7 分钟。

在这里插入图片描述

这篇文章介绍一下STL中队列deque的基本使用方法。

目录


双向队列deque

双向队列也是队列,是最为常见的一种数据结构,双向队列在STL中有deque的实现。包含双向队列在内,队列中的元素满足FIFO(先进先出)。主要特点如下:

  • 元素需满足FIFO:First In First Out

  • 出口端称为队头(Front),入口端称为队尾(Rear)

  • 可以使用数组或者链表来存储数据

  • 操作主要有入队(Enqueue)和出队(Dequeue)

  • 可以根据需要实现循环队列或者双向队列

  • 只能在队尾插入数据,在队头删除数据

  • 关于队列的说明内容可参看:

头文件和命名空间

#include <deque>

using namespace std;

常用的成员函数

queue函数名 用途 功能说明 时间复杂度
size() 查询遍历 获取元素个数 O(1)
begin() 查询遍历 获取指向第一个元素的迭代器 O(1)
end() 查询遍历 获取指向最后一个元素的迭代器 O(1)
front() 查询遍历 获取指向第一个元素的迭代器 O(1)
back() 查询遍历 获取指向最后已给元素的迭代器 O(1)
push_back 插入 在末尾插入数据x O(1)
pop_back 删除 删除最后一个元素 O(1)
push_front 插入 在末尾插入数据x O(1)
pop_front 删除 删除最后一个元素 O(1)
empty 删除 删除所有元素 O(n)

注:deque的成员函数主要包括插入和删除,实际对应着队列操作的入队和出队两个操作,然后就是获取元素个数和对头元素的操作,都是负载度为O (1)的操作。和stack相比,上述5个函数的函数名只是front和top有区别,其他函数名一致。


代码使用示例

#include 
#include
using namespace std;void print_element(deque
q) { if (!q.empty()) { cout << "Size:" << q.size() << " Queue Top Element : " << q.back() << " Queue:"; } else { cout << "Size:" << q.size() << endl; } deque
::iterator it = q.begin(); while(it != q.end()) cout << *it++; cout << endl;}int main() { deque
q; cout << "Queue Element In " << endl; print_element(q); q.push_back('L'); print_element(q); q.push_back('i'); print_element(q); q.push_back('u'); print_element(q); cout << endl << "Queue Element Out " << endl; q.pop_back(); print_element(q); q.pop_back(); print_element(q); q.clear(); print_element(q); q.push_back('i'); print_element(q); q.push_front('L'); print_element(q); q.push_back('u'); print_element(q); q.pop_back(); print_element(q); q.pop_front(); print_element(q); q.pop_front(); print_element(q);}

示例执行结果

Queue Element In Size:0Size:1 Queue Top Element : L Queue:LSize:2 Queue Top Element : i Queue:LiSize:3 Queue Top Element : u Queue:LiuQueue Element Out Size:2 Queue Top Element : i Queue:LiSize:1 Queue Top Element : L Queue:LSize:0Size:1 Queue Top Element : i Queue:iSize:2 Queue Top Element : i Queue:LiSize:3 Queue Top Element : u Queue:LiuSize:2 Queue Top Element : i Queue:LiSize:1 Queue Top Element : i Queue:iSize:0

总结

变长支持、泛化类型、常用功能函数内嵌、可以使用其他多种STL的函数、使用简单,而且也支持迭代器等,都是deque被使用的原因。

转载地址:https://liumiaocn.blog.csdn.net/article/details/109271354 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C++基础:STL之map
下一篇:C++基础:STL之双向链表list

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月14日 04时00分32秒