队列

队列是一种线性数据结构,遵循先进先出(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
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。