C++中Queue和Deque的区别

C++中Queue和Deque的区别

Queue: Queue是一种遵循先进先出(FIFO)顺序执行操作的线性数据结构。它是一种类型的容器适配器,其中元素被插入到容器的一端并从另一端删除。

C++中Queue和Deque的区别

函数:

  • empty():测试队列是否为空。
  • size():返回队列的无符号整数大小。
  • queue::front()和queue::back():front()函数返回对队列的第一个元素或最老的元素的引用。back()函数返回对队列的最后或最新元素的引用。
  • push(k)和pop():push()函数将元素”k”添加到队列的末尾。pop()函数从队列的开头删除元素并将其大小减少1。
  • swap():交换相同类型但大小可以相同或不同的两个不同队列的元素。
  • emplace():将新元素插入队列的末尾。

语法:

queue <data_type> 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++

输出:

Elements in Queue are: 15 1
C++

Deque: Deque是一种序列容器,在两端具有扩展和收缩的能力。它是C++标准模板库或STL的模板。它类似于向量,但对于元素的插入和删除更有效率。在deque中,连续存储分配可能不被保证像向量一样。

C++中Queue和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
C++

下面是用于说明相同点的程序:

// C++程序,演示deque的工作
#include <bits/stdc++.h>
using namespace std;

// 驱动程序
int main()
{
    // 声明一个deque
    deque<int> dq;

    // 在前面插入元素
    dq.push_front(10);
    dq.push_front(5);
    dq.push_front(3);

    // 从前面删除元素
    dq.pop_front();
    dq.pop_front();

    // 在后面插入元素
    dq.push_back(1);
    dq.push_back(50);
    dq.push_back(2);

    // 从后面删除元素
    dq.pop_back();
    dq.pop_back();

    cout << "Elements in deque are: ";

    // 输出存储在deque中的元素
    while (!dq.empty()) {
        cout << " " << dq.front();
        dq.pop_front();
    }

    return 0;
}  
C++

输出:

Elements in deque are:  10 1
C++

下面是队列和deque之间的表格差异:

序号 队列 Deque
1 只能通过尾端插入元素。 可以通过两端插入元素。
2 只能从前端删除元素。 可以通过两端删除元素。
3 不能通过迭代器访问元素。 可以通过迭代器访问元素。
4 作为容器适配器实现。 通常作为某种形式的动态数组。
5 无法使用队列实现堆栈。 可以使用deque实现堆栈

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程