优先队列总结

  最近用了几次优先队列,感觉有必要总结一下队列和优先队列。

queue

C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。
1.back() 返回一个引用,指向最后一个元素
2.empty() 如果队列空则返回真
3.front() 返回第一个元素
4.pop() 删除第一个元素
5.push() 在末尾加入一个元素
6.size() 返回队列中元素的个数

priority queue

优先队列在头文件#include <queue>中;

其声明格式为:priority_queue <int> 1;//声明一个名为1的整形的优先队列

基本操作有:

empty( )  //判断一个队列是否为空

pop( )  //删除队顶元素

push( )  //加入一个元素

size( )  //返回优先队列中拥有的元素个数

top( )  //返回优先队列的队顶元素

队列和优先队列有些成员函数是不同,就比如说队列取队首元素用的是front函数,而优先队列用的是top函数.

#include<stdio.h>//板子
#include<queue>
#include<bits/stdc++.h>
using namespace std;
struct node//优先队列里的元素为node型
{
    int x, y;
    node(int xx=0,int yy=0)
    {
        x=xx;
        y=yy;

    }
    friend   bool operator < (node a, node b)
    {
        return a.x > b.x;//结构体中,x小的优先级高
    }
};
struct number
{
    int x;
    number(int xx=0)
    {
        x=xx;
    }
    friend bool operator <(number a,number b)//一定要用friend,不然会编译错误
    {
        return a.x>b.x;
    }
};

int main()
{
    cout<<"优先队列1"<<endl;
    priority_queue<node>q1;
    while(!q1.empty()) q1.pop();
    q1.push(node(100,1));
    q1.push(node(99,2));
    q1.push(node(10,3));
    q1.push(node(1,4));
    while(!q1.empty())
    {
        node tmp=q1.top();
        q1.pop();
        cout<<tmp.x<<"  "<<tmp.y<<endl;

    }
    cout<<"优先队列2"<<endl;
    priority_queue<number>q2;
    while(!q2.empty()) q2.pop();
    q2.push(number(3));
    q2.push(number(30));
    q2.push(number(39));
    q2.push(number(0));
    q2.push(number(1));
    while(!q2.empty())
    {
        number tmp=q2.top();
        q2.pop();
        cout<<tmp.x<<endl;

    }
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值