当前位置:   article > 正文

【C++航海王:追寻罗杰的编程之路】queue

【C++航海王:追寻罗杰的编程之路】queue

目录

1 -> queue的介绍和使用

1.1 -> queue的介绍

1.2 -> queue的使用

1.3 -> queue的模拟实现


1 -> queue的介绍和使用

1.1 -> queue的介绍

queue的文档介绍

1. 队列是一种容器适配器,专门用于在FIFO(先进先出)上下文中操作,其中从容器一端插入元素,另一端提取元素。

2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。

3. 底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类,该底层容器应至少支持以下操作:

  • empty: 检测队列是否为空
  • size: 返回队列中有效元素的个数、
  • front: 返回队头元素的引用
  • back: 返回队尾元素的引用
  • push_back: 在队列尾部入队列
  • pop_front: 在队列头部出队列

4. 标准容器类deque和list满足了这些要求。默认情况下,如果没有为deque实例化指定容器类,则使用标准容器deque。

1.2 -> queue的使用

函数声明接口说明
queue()构造空的队列
empty()检测队列是否为空,是返回true,否则返回false
size()返回队列中有效元素个数
front()返回队头元素的引用
back()返回队尾元素的引用
push()在队尾将元素val入队列
pop()将队头元素出队列

相关题目:

用队列实现栈

  1. class MyStack
  2. {
  3. public:
  4. queue<int> q1;
  5. queue<int> q2;
  6. MyStack()
  7. {
  8. }
  9. void push(int x)
  10. {
  11. q2.push(x);
  12. while (!q1.empty())
  13. {
  14. q2.push(q1.front());
  15. q1.pop();
  16. }
  17. swap(q1, q2);
  18. }
  19. int pop()
  20. {
  21. int x = q1.front();
  22. q1.pop();
  23. return x;
  24. }
  25. int top()
  26. {
  27. int x = q1.front();
  28. return x;
  29. }
  30. bool empty()
  31. {
  32. return q1.empty();
  33. }
  34. };

1.3 -> queue的模拟实现

因为queue的接口中存在头删和尾插,因此使用vector来封装效率太低,故可以借助list来模拟实现queue。

  1. #define _CRT_SECURE_NO_WARNINGS 1
  2. #include <iostream>
  3. #include <list>
  4. using namespace std;
  5. namespace fyd
  6. {
  7. template<class T>
  8. class Queue
  9. {
  10. public:
  11. Queue(){}
  12. void push(const T& x)
  13. {
  14. _c.push_back(x);
  15. }
  16. void pop()
  17. {
  18. _c.pop_front();
  19. }
  20. T& back()
  21. {
  22. return _c.back();
  23. }
  24. const T& back()const
  25. {
  26. return _c.back();
  27. }
  28. T& front()
  29. {
  30. return _c.front();
  31. }
  32. const T& front()const
  33. {
  34. return _c.front();
  35. }
  36. size_t size()const
  37. {
  38. return _c.size();
  39. }
  40. bool empty()const
  41. {
  42. return _c.empty();
  43. }
  44. private:
  45. list<T> _c;
  46. };
  47. }

感谢各位大佬支持!!!

互三啦!!!

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

闽ICP备14008679号