队列: 队列是一种线性数据结构,遵循先进先出 (FIFO) 顺序执行操作。它是一种容器适配器,其中元素插入容器的一端并从另一端删除。
职能:
- empty():测试队列是否为空。
- size():返回无符号整数,队列的大小。
- queue::front() 和 queue::back():front()函数返回对队列中第一个元素或最旧元素的引用。 back()函数返回对队列的最后一个或最新元素的引用。
- push(k) 和 pop():push()函数在队列末尾添加元素 ‘k’。 pop()函数从队列的开头删除元素并将其大小减 1。
- swap():交换两个相同类型的不同队列的元素,但大小可能相同,也可能不同。
- emplace():用于在队列末尾插入一个新元素。
句法:
queue q
下面是说明相同的程序:
C++
// C++ program to demonstrate the
// working of queue
#include
using namespace std;
// Driver Code
int main()
{
// Declare a queue
queue q;
// Insert elements in the queue
q.push(10);
q.push(5);
q.push(15);
q.push(1);
// 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;
}
C++
// C++ program to demonstrate the
// working of deque
#include
using namespace std;
// Driver Code
int main()
{
// Declare a deque
deque dq;
// Insert element in the front
dq.push_front(10);
dq.push_front(5);
dq.push_front(3);
// Delete elements from the the front
dq.pop_front();
dq.pop_front();
// Insert elements in the back
dq.push_back(1);
dq.push_back(50);
dq.push_back(2);
// Delete elements from the 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 Queue are: 15 1
队列: Deque 是一个具有两端伸缩能力的序列容器。它是 C++ 中标准模板库或 STL 的模板。它类似于向量,但对于元素的插入和删除更有效。双端队列中的连续存储分配可能无法像向量中那样得到保证。
职能:
- max_size():返回 deque 可以包含的最大元素数。
- push_back() 和 push_front():push_front() 从前面将元素推入双端队列,而 push_back() 从后面将元素推入双端队列。
- pop_front() 和 pop_back():pop_front()函数用于从前面的 deque 中弹出元素,pop_back()函数用于从后面的 deque 中弹出元素。
- clear() 和erase():clear 用于从双端队列中删除所有元素,erase 用于删除一些指定的元素。
- insert():通过在指定位置插入元素来增加容器边。
- resize():根据需要更改元素容器的大小。
- rbegin() 和 rend():rbegin() 指向双端队列的最后一个元素,而 rend 指向双端队列开始之前的位置。
- at() 和 swap():at() 指向参数中给定元素的位置,swap() 用于两个双端队列的两个交换元素。
- emplace_front() 和 emplace_back():这两个函数分别用于在容器中插入新元素在 deque 的开头和结尾。
句法:
deque dq
下面是说明相同的程序:
C++
// C++ program to demonstrate the
// working of deque
#include
using namespace std;
// Driver Code
int main()
{
// Declare a deque
deque dq;
// Insert element in the front
dq.push_front(10);
dq.push_front(5);
dq.push_front(3);
// Delete elements from the the front
dq.pop_front();
dq.pop_front();
// Insert elements in the back
dq.push_back(1);
dq.push_back(50);
dq.push_back(2);
// Delete elements from the 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: 10 1
下面是队列和双端队列之间的表格区别:
S.No. |
Queue |
Deque |
1 | Insertion can be done through the front end only. | Insertion is possible through both ends. |
2 | Deletion of elements is possible through the front end only. | Deletion of elements possible through both ends. |
3 | Elements can not be accessed through iterators. | Elements can be accessed through iterators. |
4 | Implemented as container adaptors. | Implemented generally as some form of a dynamic array. |
5 | The stack can not be implemented using a queue. | A stack can be implemented using deque. |
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。