【STL】c++ 队列(queue) 优先队列(priority_queue) 基本用法

队列(queue)的基本用法

	q.front(); //返回队头元素的引用
    q.back();  //返回队尾元素的引用
    q.empty(); //判断队列是否为空
    q.size();  //返回队列中元素的个数
    q.emplace();//在队尾插入元素
    q.pop();    //删除队头元素
    q.push();   //在队尾插入元素
    q.swap();   //交换两个队列中的元素

注意:push()与emplace()函数同样是在队列尾部插入元素,但emplace()相当于将原料直接加工成产品插入队列,而push()则是将原料加工成产品后再将该产品复制一份插入到队列中,因此emplace()较push()更为节省空间。
swap()交换的两个队列元素类型必须相同。

优先队列(priority_queue)的基本用法

	pq.top();      //访问对头元素
    pq.pop();      //弹出对头元素
    pq.push();     //插入队列到队尾并排序
    pq.emplace();  //原地构造一个元素插入队尾
    pq.empty();   //判断队列是否为空
    pq.size();    //返回队列元素个数
    pq.swap();    //交换两队列内容

优先队列定义时,priority_queue<类型> name 默认是降序排列;
定义:priority_queue<Type, Container, Functional> Type 就是元素类型, Container是必须用数组实现的容器如 deque,vector , Functional是要实现的排序规则。如:
priority_queue<int, vector< int >, greater< int >>:升序排列(小顶堆)
priority_queue<int, vector< int >, less< int >>:降序排列(大顶堆)

总结

队列与优先队列与栈(stack)一样都是无法使用迭代器的,因为在其定义就是队头出,队尾进,即无法随机访问队列元素,因而就无法使用迭代器。
队列是 first int first out (先进先出) 优先队列 first in largest out (优先级高先出),可见优先队列是定义了优先级的队列,而优先队列在插入元素后都会自动按优先级高低自动进行排序。
优先队列中没有front(), back() 等可以直接访问队头、尾的成员函数,但是有top()类似与栈的成员函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值