STL - stack&queue&priority_queue

STL   中优先队列的使用方法 (priority_queu)

基本操作:

empty() 如果队列为空返回真

pop() 删除对顶元素

push() 加入一个元素

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

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

在默认的优先队列中,优先级高的先出队。在默认的int型中先出队的为较大的数。

使用方法:

头文件:

#include <queue>

 

声明方式:

1、普通方法:

priority_queue<int>q;
//通过操作,按照元素从大到小的顺序出队



2、自定义优先级:

 
struct  cmp
{
     operator  bool  ( ) ( int  x ,  int  y )
     {
         return x  >  y ;  // x
       // return p[x] > p[y];p[i]
    }
} ;
priority_queue < int ,  vector < int > ,  cmp > q ; //
//
 
 




3、结构体声明方式:

 
struct  node
{
     int  x ,  y ;
     friend  bool  operator  <  ( node  a ,  node  b )
     {
         return  a . x  >  b . x ;  //x
     }
} ;
priority_queue < node > q ; //
//y, x
//operator<
//”<””>”
 



 

STL 中队列的使用(queue)

基本操作:

push(x) x压入队列的末端

pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值

front() 返回第一个元素(队顶元素)

back() 返回最后被压入的元素(队尾元素)

empty() 当队列为空时,返回true

size() 返回队列的长度

 

使用方法:

头文件:

#include <queue>


 
声明方法:

1、普通声明

queue<int>q;


2
、结构体

 
struct  node
{
     int  x ,  y ;
} ;
queue < node > q ;
 




 

STL 中栈的使用方法(stack)

基本操作:

push(x) x加入栈中,即入栈操作

pop() 出栈操作(删除栈顶),只是出栈,没有返回值

top() 返回第一个元素(栈顶元素)

size() 返回栈中的元素个数

empty() 当栈为空时,返回 true


使用方法:

和队列差不多,其中头文件为:

#include <stack>


定义方法为:

stack<int>s1;//入栈元素为 int 
stack<string>s2;// 入队元素为string
stack<node>s3;//入队元素为自定义型




 
/**/ /*
*===================================*
|                                                                       |
|       STL使                          |
|                                                                       |        
|       chenlie                                                     |
|                                                                       |
|       2010-3-24                                                |
|                                                                       |
*===================================*
*/
#include  <iostream>
#include  <vector>
#include  <queue>
using  namespace  std ;
int  c [ 100 ] ;
struct  cmp1
{
      bool  operator  ( ) ( int  x ,  int  y )
     {
         return  x  >  y ; //
     }
} ;
struct  cmp2
{
     bool  operator  ( ) ( const  int  x ,  const  int  y )
     {
         return  c [ x ]  >  c [ y ] ; 
        // c[x]
         //使
     }
} ;
struct  node
{
     int  x ,  y ;
     friend  bool  operator  <  ( node  a ,  node  b )
     {
         return  a . x  >  b . x ; //x
     }
} ;
priority_queue < int > q1 ;
priority_queue < int ,  vector < int > ,  cmp1 > q2 ;
priority_queue < int ,  vector < int > ,  cmp2 > q3 ;
priority_queue < node > q4 ;
queue < int > qq1 ;
queue < node > qq2 ;
int  main ( )
{
     int  i ,  j ,  k ,  m ,  n ;
     int  x ,  y ;
     node  a ;
     while  ( cin  >>  n )
     {
         for  ( i  =  0 ;  i  <  n ;  i ++ )
         {
              cin  >>  a . y  >>  a . x ;
              q4 . push ( a ) ;
         }
         cout  <<  endl ;
         while  ( ! q4 . empty ( ))
         {
              cout  <<  q4 . top ( ) . y  <<  " "  <<  q4 . top ( ) . x  <<  endl ;
              q4 . pop ( ) ;
         }
     //    cout << endl;
     }
     return  0 ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值