📜  C++ STL中的双端队列(1)

📅  最后修改于: 2023-12-03 14:39:52.892000             🧑  作者: Mango

C++ STL中的双端队列

C++ STL中的双端队列是一种常见的数据结构,支持在队列头和尾部进行插入和删除操作。它是deque(“双(double)”、“端(ended)”、“队列(queue)”三个单词的缩写)类型的模版类,定义在queue头文件中。

双端队列的定义

双端队列的定义如下:

#include <deque>

std::deque<T> dq;

其中T为数据类型,可以是任意数据类型。

双端队列的操作

双端队列支持的操作有:

  • push_front(value):在队头插入一个元素value。
  • push_back(value):在队尾插入一个元素value。
  • pop_front():弹出队头元素。
  • pop_back():弹出队尾元素。
  • front():返回队头元素。
  • back():返回队尾元素。
  • size():返回队列中元素的个数。
  • empty():判断队列是否为空。

下面是双端队列的一些操作示例:

#include <iostream>
#include <deque>

int main() {
    std::deque<int> dq;
    dq.push_front(1);
    dq.push_back(2);
    dq.push_front(3);
    for (int i = 0; i < dq.size(); i++) {
        std::cout << dq[i] << " ";
    }
    std::cout << std::endl;
    dq.pop_front();
    dq.pop_back();
    for (int i = 0; i < dq.size(); i++) {
        std::cout << dq[i] << " ";
    }
    std::cout << std::endl;
    std::cout << dq.front() << " " << dq.back() << std::endl;
    std::cout << std::boolalpha << dq.empty() << std::endl;
    std::cout << dq.size() << std::endl;
    return 0;
}

输出结果为:

3 1 2
1
1 1
false
1
总结

双端队列是C++ STL中的一个常用数据结构,可以在队头和队尾进行插入和删除操作。它的操作与普通的队列类似,但使用起来更加灵活。在实际应用中,双端队列通常可以作为一种辅助数据结构,简化算法实现过程。