STL——队列和优先队列

队列(queue):

队列是数据结构中的一种,队列只限定在一端进行插入,另一端进行删除的特殊线性表,顾名思义,就像我们排队,最先排队的人买完东西后最先从队伍离开,就是我们所说的first  in  first  out。

头文件:#include <queue>

定义:queue <数据类型,包括自定义的数据类型> 队列名;

//queue <int> q

几种几本操作:

empty() -- 返回bool型,表示queue是否为空 (q.empty() )     

size() -- 返回queue内元素个数 (q.size() )   

front() -- 返回queue内的下一个元素 (q.front() )     

back() -- 返回queue内的最后一个元素(q.back() )   

 pop() -- 移除queue中的一个元素(q.pop(); )   

push(data_type a) -- 将一个元素a置入queue中(q.push(a); )

 优先队列(priority_queue):

通俗点说就是一个可以进行自动排序的队列。

头文件:#include <queue>

一般定义:priority_queue <数据类型,包括自己定义的数据类型> 队列名;//采用的默认优先级大顶堆,既从大到小排序

习惯使用的几种定义:

priority_queue <int ,vector<int>,less<int> > q;//最大值优先队列,需要注意的是最后> >中间要有空格,否则是位运算

priority_queue <int ,vector<int>,greator<int> > q;//最小值优先队列

我们还可以使用自己定义排列顺序,这时候需要进行结构体的重载,其实说实话还确实不是很懂,运算符重载还没有学透,现在只能是照葫芦画瓢,后续我学明白了再进行补充,对不住了(双手合十)

priority_queue<int,vector<int>,cmp1>q;//最小值优先 

struct cmp1  
{    
    bool operator ()(int &a,int &b)  
    {    
        return a>b;//最小值优先 ,大于号含义相反    
    }    
};
 priority_queue<int,vector<int>,cmp2>q;//最大值优先   
   
struct cmp2  
{    
    bool operator ()(int &a,int &b)  
    {    
        return a<b;//最大值优先,小于号含义相反     
    }    
}; 

priority_queue<node1>q;  //自定义优先级   
 
struct node1  
{    
    int u;    
    bool operator < (const node1 &a) const  //重载了小于号 
    {    
       return u>a.u;//最小值优先     
    }    
};   
priority_queue<node2>q;  //自定义优先级
 
struct node2  
{    
    int u;    
    bool operator < (const node2 &a) const   //重载了小于号
    {    
        return u<a.u;//最大值优先     
    }    
};   

基本操作:

 q.push(elem) 将元素置入优先队列     

q.top() 返回优先队列的下一个元素     

q.pop() 移除一个元素     

q.size() 返回队列中元素的个数     

q.empty() 返回bool值判断优先队列是否为空

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值