队列是一种线性数据结构,遵循先进先出(FIFO)的顺序进行操作。它是一种容器适配器,元素被插入到容器的一端,并从另一端删除。
函数:
empty() – 测试队列是否为空。size() – 返回无符号int,即队列的大小。queue::front() 和 queue::back(): front()函数返回队列中第一个元素或最老的元素的引用。back()函数返回队列中最后一个或最新一个元素的引用。push(k)和pop():push()函数在队列的末尾添加元素’k’。pop()函数从队列的开头删除元素并将其大小减少1。swap():交换两个相同类型的不同队列的元素,但可能是也可能不是相同大小的。emplace(): 用来在队列的末端插入一个新元素。语法
queue q
示例代码:
#include
using namespace std;
// Driver Code
int main()
{
// Declare a queue
queue 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是一个序列容器,两端都有扩展和收缩的能力。它是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 dq
程序示例 –
#include
using namespace std;
// Driver Code
int main()
{
// Declare a deque
deque 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来实现堆栈。 |
上一篇:ANN和BNN的区别
下一篇:国内营销和国际营销的区别