21xrx.com
2024-11-05 19:02:35 Tuesday
登录
文章检索 我的文章 写文章
C++双端队列的实现
2023-07-05 09:04:37 深夜i     --     --
C++ 双端队列 实现

双端队列(Double-ended Queue),也称为双向队列,是一种可以在两端添加或删除元素的线性数据结构。它支持在队列的前端和后端同时进行入队和出队操作,非常适合于需要快速插入和删除数据的场景。在C++中,双端队列可以使用STL中的deque类来实现。

deque是C++ STL库中的容器类,使用双端队列数据结构实现,支持快速随机访问,同时也支持在两端添加或删除元素。双端队列可以在头部和尾部执行元素的插入和删除操作,它的插入和删除操作的时间复杂度都是常数级别。

deque的定义如下:


template <class T, class Alloc = allocator<T> >

class deque;

其中,T是双端队列中元素的类型,Alloc是用来分配内存的分配器类型。双端队列支持大部分STL容器共有的操作,包括push_back,push_front,pop_back,pop_front等。此外,deque还支持随机访问,可以通过[]或at()方法访问队列中的元素。

下面是一些deque的样例代码:


#include <deque>

using namespace std;

int main() {

  // 创建一个空deque

  deque<int> d;

  // 在deque尾部添加元素

  d.push_back(1);

  d.push_back(2);

  d.push_back(3);

  // 在deque头部添加元素

  d.push_front(0);

  // 访问deque中的元素

  cout << d[0] << endl;  // 输出0

  cout << d.at(2) << endl; // 输出3

  // 删除deque尾部的元素

  d.pop_back();

  // 删除deque头部的元素

  d.pop_front();

  // 获取deque中的元素个数

  cout << d.size() << endl; // 输出2

  return 0;

}

总之,使用C++ STL中的deque类可以非常方便地实现双端队列,让我们在开发中更加高效地处理数据。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复