queue基础知识

queue

1.queue

1) queue 的定义与结构

template <class T, class Container = deque<T>>
class queue;
  • queue 是一个先进先出(FIFO)的数据结构;

  • 其中T表示 stack 中存放的数据类型;

  • Contaier:表示底层容器的类型,默认参数;

2)queue 的一些常用函数

1)push(x) 在队尾插入元素x ,时间复杂度为O(1);

2)pop() 弹出队首元素 ,时间复杂度为O(1);

3)front() 返回队首元素,时间复杂度为O(1);

4)back() 返回队尾元素,时间复杂度为O(1);

4)empty() 检查 queue 是否为空,时间复杂度为O(1);

5)size() 返回 queue 中的元素个数,时间复杂度为O(1);

2.priority_queue() 队列

1) priority_queue 的定义与结构

  • 默认情况下,priority_queue() 按照元素从大到小进行排序,即最大的元素在队列最前面,为 top()值;

template <class T, class Container = vector<T>,class Compare = less<typename Container::value_type>>
class priority_queue;
  • 其中T表示 stack 中存放的数据类型;

  • Contaier:表示底层容器的类型,默认参数;

  • Compare:比较函数,默认为less,即按照从大到小的

2)priority_queue 的一些常用函数

1)push(x) 在优先队列中插入元素x ,时间复杂度为O(logN);

2)pop() 弹出优先队列的顶部元素 ,时间复杂度为O(logN);

3)top() 返回优先队列顶部的元素,时间复杂度为O(1);

4)empty() 检查优先队列是否为空,时间复杂度为O(1);

5)size() 返回优先队列中的元素个数,时间复杂度为O(1);

3)改变比较函数

  • 默认情况:priority_queue<int ,vector<int>,less<int> > pq; 平时cmp函数缺省,默认使用 less<int>,形成大根堆(每个父节点都大于子节点,使得此队列队首元素为最大);

  • 如果元素类型比较简单,只是单纯的逆序排序则使用 greater<int>,形成小根堆;

3.deque 双端队列

  • 双端队列其实就是在队列 queue 的基础上在队列的两端都可以实现数据的插入和弹出;

常用函数

1)push_back( ) 和 push_front( ) 用来向 deque 的尾端或者首端插入一个元素;

2)pop_back() 和 pop_front() 用来去除 deque 的尾端或者首端一个元素,在使用前要先判断 deque 是否为空;

3)size() 返回 deque 此时存有的元素个数;

4)empty( ) 用来检查 deque 是否为空;

5)clear( ) 用来清空 deque 的所有元素;

6)front( ) 和 back( ) 用来返回 list 里面第一个元素或最后一个元素的的引用

注意:至于 insert 和 erase 不是没有,而是不常用,使用双端队列一般便不再操作中间的某个数;

  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值