当前位置:   article > 正文

c++11 std::queue_std::queue遍历

std::queue遍历

FIFO queue

queues are a type of container adaptor, specifically designed to operate in a FIFO context (first-in first-out), where elements are inserted into one end of the container and extracted from the other.

queues are implemented as containers adaptors, which are classes that use an encapsulated object of a specific container class as its underlying container, providing a specific set of member functions to access its elements. Elements are pushed into the "back" of the specific container and popped from its "front".

interface class: 

  1. namespace std {
  2. template<class T, class Allocator = allocator<T>>
  3. class deque {
  4. public:
  5. // 类型
  6. using value_type = T;
  7. using allocator_type = Allocator;
  8. using pointer = typename allocator_traits<Allocator>::pointer;
  9. using const_pointer = typename allocator_traits<Allocator>::const_pointer;
  10. using reference = value_type&;
  11. using const_reference = const value_type&;
  12. using size_type = /* 由实现定义 */;
  13. using difference_type = /* 由实现定义 */;
  14. using iterator = /* 由实现定义 */;
  15. using const_iterator = /* 由实现定义 */;
  16. using reverse_iterator = std::reverse_iterator<iterator>;
  17. using const_reverse_iterator = std::reverse_iterator<const_iterator>;
  18. // 构造/复制/销毁
  19. deque():deque(Allocator()) { }
  20. explicit deque(const Allocator&);
  21. explicit deque(size_type n, const Allocator& = Allocator());
  22. deque(size_type n, const T& value, const Allocator& = Allocator());
  23. template<class InputIt>
  24. deque(InputIt first, InputIt last, const Allocator& = Allocator());
  25. deque(const deque& x);
  26. deque(deque&&);
  27. deque(const deque&, const Allocator&);
  28. deque(deque&&, const Allocator&);
  29. deque(initializer_list<T>, const Allocator& = Allocator());
  30. ~deque();
  31. deque& operator=(const deque& x);
  32. deque& operator=(deque&& x)
  33. noexcept(allocator_traits<Allocator>::is_always_equal::value);
  34. deque& operator=(initializer_list<T>);
  35. template<class InputIt>
  36. void assign(InputIt first, InputIt last);
  37. void assign(size_type n, const T& t);
  38. void assign(initializer_list<T>);
  39. allocator_type get_allocator() const noexcept;
  40. // 迭代器
  41. iterator begin() noexcept;
  42. const_iterator begin() const noexcept;
  43. iterator end() noexcept;
  44. const_iterator end() const noexcept;
  45. reverse_iterator rbegin() noexcept;
  46. const_reverse_iterator rbegin() const noexcept;
  47. reverse_iterator rend() noexcept;
  48. const_reverse_iterator rend() const noexcept;
  49. const_iterator cbegin() const noexcept;
  50. const_iterator cend() const noexcept;
  51. const_reverse_iterator crbegin() const noexcept;
  52. const_reverse_iterator crend() const noexcept;
  53. // 容量
  54. [[nodiscard]] bool empty() const noexcept;
  55. size_type size() const noexcept;
  56. size_type max_size() const noexcept;
  57. void resize(size_type sz);
  58. void resize(size_type sz, const T& c);
  59. void shrink_to_fit();
  60. // 元素访问
  61. reference operator[](size_type n);
  62. const_reference operator[](size_type n) const;
  63. reference at(size_type n);
  64. const_reference at(size_type n) const;
  65. reference front();
  66. const_reference front() const;
  67. reference back();
  68. const_reference back() const;
  69. // 修改器
  70. template<class... Args> reference emplace_front(Args&&... args);
  71. template<class... Args> reference emplace_back(Args&&... args);
  72. template<class... Args> iterator emplace(const_iterator position, Args&&... args);
  73. void push_front(const T& x);
  74. void push_front(T&& x);
  75. void push_back(const T& x);
  76. void push_back(T&& x);
  77. iterator insert(const_iterator position, const T& x);
  78. iterator insert(const_iterator position, T&& x);
  79. iterator insert(const_iterator position, size_type n, const T& x);
  80. template<class InputIt>
  81. iterator insert(const_iterator position, InputIt first, InputIt last);
  82. iterator insert(const_iterator position, initializer_list<T>);
  83. void pop_front();
  84. void pop_back();
  85. iterator erase(const_iterator position);
  86. iterator erase(const_iterator first, const_iterator last);
  87. void swap(deque&)
  88. noexcept(allocator_traits<Allocator>::is_always_equal::value);
  89. void clear() noexcept;
  90. };
  91. template<class InputIt, class Allocator = allocator</*iter-value-type*/<InputIt>>>
  92. deque(InputIt, InputIt, Allocator = Allocator())
  93. -> deque</*iter-value-type*/<InputIt>, Allocator>;
  94. // 交换
  95. template<class T, class Allocator>
  96. void swap(deque<T, Allocator>& x, deque<T, Allocator>& y)
  97. noexcept(noexcept(x.swap(y)));
  98. }

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
  

闽ICP备14008679号