C++中Queue和Deque的区别
Queue: Queue是一种遵循先进先出(FIFO)顺序执行操作的线性数据结构。它是一种类型的容器适配器,其中元素被插入到容器的一端并从另一端删除。
函数:
- empty():测试队列是否为空。
- size():返回队列的无符号整数大小。
- queue::front()和queue::back():front()函数返回对队列的第一个元素或最老的元素的引用。back()函数返回对队列的最后或最新元素的引用。
- push(k)和pop():push()函数将元素”k”添加到队列的末尾。pop()函数从队列的开头删除元素并将其大小减少1。
- swap():交换相同类型但大小可以相同或不同的两个不同队列的元素。
- emplace():将新元素插入队列的末尾。
语法:
以下是说明相同的程序:
输出:
Deque: Deque是一种序列容器,在两端具有扩展和收缩的能力。它是C++标准模板库或STL的模板。它类似于向量,但对于元素的插入和删除更有效率。在deque中,连续存储分配可能不被保证像向量一样。
函数:
- max_size():返回deque可以包含的最大元素数。
- push_back()和push_front():push_front()从前面将元素推入deque中,push_back()从后面将元素推入deque中。
- pop_front()和pop_back():pop_front()函数用于从deque的前面弹出元素,pop_back()函数用于从deque的后面弹出元素。
- clear()和erase():clear用于从deque中删除所有元素,erase用于删除某些指定元素。
- insert():通过在指定位置插入元素来增加容器的大小。
- resize():根据需要更改元素容器的大小。
- rbegin()和rend():rbegin()指向deque的最后一个元素,而rend指向deque开始前的位置。
- at()和swap():at()指向在参数中给定的元素的位置,swap()用于交换两个deque的元素
- emplace_front()和emplace_back():这两个函数用于在deque的开头和结尾插入新元素。
语法:
下面是用于说明相同点的程序:
输出:
下面是队列和deque之间的表格差异:
序号 | 队列 | Deque |
---|---|---|
1 | 只能通过尾端插入元素。 | 可以通过两端插入元素。 |
2 | 只能从前端删除元素。 | 可以通过两端删除元素。 |
3 | 不能通过迭代器访问元素。 | 可以通过迭代器访问元素。 |
4 | 作为容器适配器实现。 | 通常作为某种形式的动态数组。 |
5 | 无法使用队列实现堆栈。 | 可以使用deque实现堆栈 |