队列
队列是一种线性数据结构,遵循先进先出(FIFO)的顺序进行操作。它是一种容器适配器,元素被插入到容器的一端,并从另一端删除。
函数:
empty()
- 测试队列是否为空。size()
- 返回无符号int,即队列的大小。queue::front()
和queue::back()
:front()
函数返回队列中第一个元素或最老的元素的引用。back()
函数返回队列中最后一个或最新一个元素的引用。push(k)
和pop()
:push()
函数在队列的末尾添加元素’k’。pop()
函数从队列的开头删除元素并将其大小减少1。swap()
:交换两个相同类型的不同队列的元素,但可能是也可能不是相同大小的。emplace()
: 用来在队列的末端插入一个新元素。
语法
queue <data_type> q
示例代码:
#include <bits/stdc++.h>
using namespace std;
// Driver Code
int main()
{
// Declare a queue
queue<int> q;
// Insert elements in the queue
q.push(110);
q.push(15);
q.push(115);
q.push(11);
// Delete elements from the queue
q.pop();
q.pop();
cout << "Elements in Queue are: ";
// Print the element stored
// in queue
while (!q.empty()) {
cout << q.front() << ' ';
// Pop the front element
q.pop();
}
return 0;
}
运行结果:
Elements in Queue are: 115 11
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<data_type> dq
程序示例 -
#include <bits/stdc++.h>
using namespace std;
// Driver Code
int main()
{
// Declare a deque
deque<int> dq;
// Insert element in the front
dq.push_front(210);
dq.push_front(25);
dq.push_front(23);
// Delete elements from the front
dq.pop_front();
dq.pop_front();
// Insert elements in the back
dq.push_back(21);
dq.push_back(250);
dq.push_back(22);
// Delete elements from the back
dq.pop_back();
dq.pop_back();
cout << "Elements in deque are: ";
// Print the element stored in deque
while (!dq.empty()) {
cout << " " << dq.front();
dq.pop_front();
}
return 0;
}
运行结果:
Elements in deque are: 210 21
以下是队列和Deque之间的区别:
序号 | 队列 | Deque |
---|---|---|
1 | 插入只能通过后端进行。 | 插入可以通过两端进行。 |
2 | 删除元素只能通过前端进行。 | 通过两端都可以删除元素。 |
3 | 元素不能通过迭代器访问。 | 可以通过迭代器访问元素。 |
4 | 实现为容器适配器。 | 一般以某种形式的动态数组实现。 |
5 | 栈不能用队列来实现。 | 可以用deque来实现堆栈。 |
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:队列和Deque 的区别
本文链接:https://www.vsdiffer.com/vs/difference-between-queue-and-deque-in-c.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。