C++ queue和deque

C++中,queue(队列)是一种标准库容器,它遵循先进先出(FIFO)的原则,即最先进入队列的元素将最先被取出。queue是基于模板的数据结构,可以存储任意类型的元素。

deque(双端队列)与queue类似,但它允许在容器的两端进行有效的插入和删除操作。

1 queue

1.1 头文件

在使用queue之前,需要包含<queue>头文件:

  #include <queue>

1.2 创建对象

 使用std::queue 模板类创建queue对象,指定存储在队列中的元素类型:

  std::queue<int> myQueue;

1.3 基本操作

- push() : 将元素添加到队列的末尾。
- pop() : 删除队列头部的元素。
- front() : 访问队列头部的元素。
- back() : 访问队列尾部的元素。
- empty() : 检查队列是否为空。
- size() : 返回队列中元素的数量。
- emplace() : 在当前后元素上方的队列中插入新元素。

需要注意,push和emplace类似,但emplace实质上是传递构造函数的参数,直接在内存上构造对象,省去移动的过程。

1.4 示例用法

  std::queue<int> myQueue;

   myQueue.push(10);
   myQueue.push(20);
   myQueue.push(30);

   while (!myQueue.empty()) {
       std::cout << myQueue.front() << " "; // 输出队列头部元素
       myQueue.pop(); // 删除队列头部元素
   }
   

1.5 注意事项

- queue队列不提供迭代器访问元素,只能通过front和back访问队列头尾元素。

- queue队列不支持随机访问,只能在队列头部删除元素,队列尾部添加元素。

2 deque

在C++中,deque(双端队列)是一种标准库容器,它允许在两端进行高效的插入和删除操作。

2.1 头文件 

使用deque和queue一样,都需要包含<queue>头文件:

  #include <queue>

2.2 创建对象:

使用std::deque模板类创建deque对象,指定存储在双端队列中的元素类型:

  std::deque<int> myDeque;

2.3 基本操作

- push_front() : 在双端队列的前端插入元素。
- push_back() : 在双端队列的后端插入元素。
- pop_front() : 删除双端队列的第一个元素。
- pop_back() : 删除双端队列的最后一个元素。
- front() : 访问双端队列的第一个元素。
- back() : 访问双端队列的最后一个元素。
- empty() : 检查双端队列是否为空。
- size() : 返回双端队列中元素的数量。

2.4 示例用法

  std::deque<int> myDeque;

   myDeque.push_front(10);
   myDeque.push_back(20);

   while (!myDeque.empty()) {
       std::cout << myDeque.front() << " "; // 输出双端队列的第一个元素
       myDeque.pop_front(); // 删除双端队列的第一个元素
   }
   

2.5 注意事项 

- deque支持高效的在两端进行插入和删除操作,适合需要频繁在两端操作元素的场景。

- 与vector相比,deque在插入和删除操作方面更高效,但在随机访问方面性能略低。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值