std::queue 是 C++ 标准模板库 (STL) 中的一种容器适配器,提供了一种先进先出 (FIFO) 的数据结构。std::queue 基于底层容器(如 std::deque 或 std::list)实现。下面是 std::queue 的所有主要操作和成员函数:
构造函数
queue(): 默认构造函数,创建一个空的队列。
explicit queue(const Container& cont): 使用指定的容器构造队列。
explicit queue(Container&& cont): 使用移动的容器构造队列。
template< class Alloc > explicit queue(const Alloc& alloc): 使用给定的分配器构造队列。
template< class Alloc > queue(const Container& cont, const Alloc& alloc): 使用给定的容器和分配器构造队列。
template< class Alloc > queue(Container&& cont, const Alloc& alloc): 使用移动的容器和给定的分配器构造队列。
template< class Alloc > queue(const queue& other, const Alloc& alloc): 拷贝构造函数,使用给定的队列和分配器构造队列。
template< class Alloc > queue(queue&& other, const Alloc& alloc): 移动构造函数,使用给定的队列和分配器构造队列。
赋值操作
queue& operator=(const queue& other): 拷贝赋值操作符,赋值一个和 other 内容相同的队列。
queue& operator=(queue&& other) noexcept: 移动赋值操作符,移动赋值 other 的资源到当前队列。
容量
bool empty() const: 检查队列是否为空。
size_type size() const: 返回队列中元素的数量。
元素访问
reference front(): 访问队列中的第一个元素。
const_reference front() const: 访问队列中的第一个常量元素。
reference back(): 访问队列中的最后一个元素。
const_reference back() const: 访问队列中的最后一个常量元素。
修改器
void push(const T& value): 将元素 value 添加到队列的末尾。
void push(T&& value): 将移动的元素 value 添加到队列的末尾。
template< class… Args > void emplace( Args&&… args ): 在队列的末尾原位构造元素(C++11)。
void pop(): 移除队列中的第一个元素。
void swap(queue& other) noexcept: 交换两个队列的内容(C++11)。
非成员函数
template< class T, class Container > bool operator==( const queue<T,Container>& lhs, const queue<T,Container>& rhs ): 比较两个队列是否相等。
template< class T, class Container > bool operator!=( const queue<T,Container>& lhs, const queue<T,Container>& rhs ): 比较两个队列是否不等。
template< class T, class Container > bool operator<( const queue<T,Container>& lhs, const queue<T,Container>& rhs ): 比较 lhs 是否小于 rhs。
template< class T, class Container > bool operator<=( const queue<T,Container>& lhs, const queue<T,Container>& rhs ): 比较 lhs 是否小于等于 rhs。
template< class T, class Container > bool operator>( const queue<T,Container>& lhs, const queue<T,Container>& rhs ): 比较 lhs 是否大于 rhs。
template< class T, class Container > bool operator>=( const queue<T,Container>& lhs, const queue<T,Container>& rhs ): 比较 lhs 是否大于等于 rhs。
template< class T, class Container > void swap( queue<T,Container>& lhs, queue<T,Container>& rhs ) noexcept(noexcept(lhs.swap(rhs))): 交换两个队列的内容。
这些操作和成员函数提供了对 std::queue 的全面控制,使其在需要先进先出的数据结构的场景中非常有用。