当前位置:   article > 正文

C++ queue和deque_c++ deque和queue

c++ deque和queue

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 示例用法

  1. std::queue<int> myQueue;
  2. myQueue.push(10);
  3. myQueue.push(20);
  4. myQueue.push(30);
  5. while (!myQueue.empty()) {
  6. std::cout << myQueue.front() << " "; // 输出队列头部元素
  7. myQueue.pop(); // 删除队列头部元素
  8. }

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 示例用法

  1. std::deque<int> myDeque;
  2. myDeque.push_front(10);
  3. myDeque.push_back(20);
  4. while (!myDeque.empty()) {
  5. std::cout << myDeque.front() << " "; // 输出双端队列的第一个元素
  6. myDeque.pop_front(); // 删除双端队列的第一个元素
  7. }

2.5 注意事项 

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/975244
推荐阅读
相关标签
  

闽ICP备14008679号