C++容器queue

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 的全面控制,使其在需要先进先出的数据结构的场景中非常有用。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中的代码展示了使用STL库中的queue容器的示例。queue是一种先进先出(FIFO)的数据结构,它允许在队尾插入元素,在队首删除元素。在这个示例中,首先创建了一个CData的对象test1,并将其加入到了dataQueue中,然后通过front()函数获取dataQueue的队首元素并赋值给data对象,最后通过pop()函数将队首元素从dataQueue中弹出。 引用说明了queue的底层实现类型,默认为std::deque,但也可以是其他类型,只要支持相应的操作,如front、back、push_back和pop_front等。 引用列举了queue常用的成员函数和功能。其中,empty()函数用于判断queue是否为空,size()函数用于返回queue中元素的个数,front()函数返回queue的第一个元素的引用,back()函数返回queue的最后一个元素的引用,push()函数用于在queue的尾部添加一个元素的副本,emplace()函数用于在queue的尾部直接添加一个元素,push(T&& obj)函数以移动的方式在queue的尾部添加元素,pop()函数用于删除queue中的第一个元素,swap()函数用于交换两个queue容器的元素。 综上所述,引用的代码示例展示了使用STL库中的queue容器的基本操作,包括插入、删除和访问元素的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [c++ stl queue的使用](https://blog.csdn.net/tianyexing2008/article/details/126356034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [C++STL 之queue的简单使用](https://blog.csdn.net/lady_killer9/article/details/79261798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值