赞
踩
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".
- namespace std {
- template<class T, class Allocator = allocator<T>>
- class deque {
- public:
- // 类型
- using value_type = T;
- using allocator_type = Allocator;
- using pointer = typename allocator_traits<Allocator>::pointer;
- using const_pointer = typename allocator_traits<Allocator>::const_pointer;
- using reference = value_type&;
- using const_reference = const value_type&;
- using size_type = /* 由实现定义 */;
- using difference_type = /* 由实现定义 */;
- using iterator = /* 由实现定义 */;
- using const_iterator = /* 由实现定义 */;
- using reverse_iterator = std::reverse_iterator<iterator>;
- using const_reverse_iterator = std::reverse_iterator<const_iterator>;
-
- // 构造/复制/销毁
- deque():deque(Allocator()) { }
- explicit deque(const Allocator&);
- explicit deque(size_type n, const Allocator& = Allocator());
- deque(size_type n, const T& value, const Allocator& = Allocator());
- template<class InputIt>
- deque(InputIt first, InputIt last, const Allocator& = Allocator());
- deque(const deque& x);
- deque(deque&&);
- deque(const deque&, const Allocator&);
- deque(deque&&, const Allocator&);
- deque(initializer_list<T>, const Allocator& = Allocator());
-
- ~deque();
- deque& operator=(const deque& x);
- deque& operator=(deque&& x)
- noexcept(allocator_traits<Allocator>::is_always_equal::value);
- deque& operator=(initializer_list<T>);
- template<class InputIt>
- void assign(InputIt first, InputIt last);
- void assign(size_type n, const T& t);
- void assign(initializer_list<T>);
- allocator_type get_allocator() const noexcept;
-
- // 迭代器
- iterator begin() noexcept;
- const_iterator begin() const noexcept;
- iterator end() noexcept;
- const_iterator end() const noexcept;
- reverse_iterator rbegin() noexcept;
- const_reverse_iterator rbegin() const noexcept;
- reverse_iterator rend() noexcept;
- const_reverse_iterator rend() const noexcept;
-
- const_iterator cbegin() const noexcept;
- const_iterator cend() const noexcept;
- const_reverse_iterator crbegin() const noexcept;
- const_reverse_iterator crend() const noexcept;
-
- // 容量
- [[nodiscard]] bool empty() const noexcept;
- size_type size() const noexcept;
- size_type max_size() const noexcept;
- void resize(size_type sz);
- void resize(size_type sz, const T& c);
- void shrink_to_fit();
-
- // 元素访问
- reference operator[](size_type n);
- const_reference operator[](size_type n) const;
- reference at(size_type n);
- const_reference at(size_type n) const;
- reference front();
- const_reference front() const;
- reference back();
- const_reference back() const;
-
- // 修改器
- template<class... Args> reference emplace_front(Args&&... args);
- template<class... Args> reference emplace_back(Args&&... args);
- template<class... Args> iterator emplace(const_iterator position, Args&&... args);
-
- void push_front(const T& x);
- void push_front(T&& x);
- void push_back(const T& x);
- void push_back(T&& x);
-
- iterator insert(const_iterator position, const T& x);
- iterator insert(const_iterator position, T&& x);
- iterator insert(const_iterator position, size_type n, const T& x);
- template<class InputIt>
- iterator insert(const_iterator position, InputIt first, InputIt last);
- iterator insert(const_iterator position, initializer_list<T>);
-
- void pop_front();
- void pop_back();
-
- iterator erase(const_iterator position);
- iterator erase(const_iterator first, const_iterator last);
- void swap(deque&)
- noexcept(allocator_traits<Allocator>::is_always_equal::value);
- void clear() noexcept;
- };
-
- template<class InputIt, class Allocator = allocator</*iter-value-type*/<InputIt>>>
- deque(InputIt, InputIt, Allocator = Allocator())
- -> deque</*iter-value-type*/<InputIt>, Allocator>;
-
- // 交换
- template<class T, class Allocator>
- void swap(deque<T, Allocator>& x, deque<T, Allocator>& y)
- noexcept(noexcept(x.swap(y)));
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。