1. 程式人生 > >FIFO佇列和優先佇列

FIFO佇列和優先佇列

FIFO佇列

定義:先進先出的儲存結構(刪除時先刪最後一個元素)

queue<型別> q;

增:

q.push(元素值);             //在隊尾加入一個元素 void

刪:

q.pop();                    //刪除元素,刪除隊首元素 void

改:

查:

q.size();                   //返回佇列中剩餘元素個數 int
q.empty();                  //返回佇列是否為空 bool
q.front();                 //返回隊首元素,不刪除
q.back();                   //返回隊尾元素,不刪除

優先佇列

定義:先進先出的儲存結構(刪除時先刪第一個元素)

priority_queue <型別> q;

增:

q.push(元素值);             //在隊尾加入一個元素 void

刪:

q.pop();                    //刪除元素,刪除隊首元素  void

改:

查:

q.size();                   //返回佇列中剩餘元素個數 int
q.empty();                  //返回佇列是否為空 bool
q.top();                   //返回優先佇列對頂元素,返回優先佇列中有最高優先順序的元素(可重定義優先順序)

重新定義佇列優先順序

#include<bits/stdc++.h>
using namespace std;

struct cmp{  
    bool operator ()(int &a,int &b){  
        return a>b;//最小值優先  
    }  
}; 
int main(){
	//priority_queue<int,vector<int>,cmp1>que1;//最小值優先 
	priority_queue<int,vector<int>,cmp > q;
	q.push(10);
	q.push(1);
	q.push(10);
	q.push(20);
	
	cout<<q.top()<<endl;
	q.pop();
	
	cout<<q.top()<<endl;
	q.pop();
	cout<<q.top()<<endl;
	q.pop();
	cout<<q.top()<<endl;
	q.pop();
	return 0; 
}