队列容器

  • Post author:
  • Post category:其他


队列:

//队列容器:队首出队,队尾入队。 
#include<queue>//queue头文件 
#include<iostream>
using namespace std;
int main(int argc,char*argv[])
{
	queue<int>q;//定义一个整形队列,元素类型是整形。
	//入队,即插入元素; 
	q.push(1);
	q.push(2);
	q.push(3);
	q.push(9);
	cout<<q.size()<<endl;//返回队列元素数量 
	cout<<q.empty() <<endl;//判断队列是否为空,是空返回逻辑真(1 ),否则返回逻辑假(0);
	cout<<q.front() <<endl;//读取队首元素 
	cout<<q.back() <<endl;//读取队尾元素
	while(!q.empty() )//所有的元素出列 
	{
		cout<<q.front() <<" ";//队首元素出队(删除队首元素) 
		q.pop() ;
		}    
	cout<<endl;//回车换行 
	return 0;	
}

优先队列:

优先队列:队尾入队,队首出队。默认排序:由大到小 
#include<queue>//priority_queue头文件 
#include<iostream>
using namespace std;
int main(int argc,char* argv){
	priority_queue<int>pq;//定义一个整形优先队列,元素类型是整形
	pq.push(1);
	pq.push(2);
	pq.push(3);
	pq.push(9);
	cout<<pq.size() <<endl;//返回队列中元素个数
	while(pq.empty() !=true)//所有元素出队,删除所有元素。 
	{
		cout<<pq.top() <<" ";//读取当前队首元素 
		pq.pop() ;
	 } 
	cout<<endl;//回车换行 
	return 0;
	    
}

重载:

一:

//在结构体中重载“<”操作符的方法来修改优先队列的优先性  
#include<queue>
#include<string>
#include<iostream>
using namespace std;
struct Info{//定义结构体 
	string name;
	float score;
	bool operator<(const Info &a)const   //后一个const不可少 
	{
		return a.score <score;
	}
}; 
int main(int argc,char *argv[])
{
	priority_queue<Info>pq;
    Info info;
    info.name ="Jack";
    info.score =68.5;
	pq.push(info);
	info.name ="Bomi";
	info.score =18.5;
	pq.push(info);
	info.name ="Peti";
	info.score =90;
	pq.push(info);
	while(pq.empty()!=true )//队空不为真,即队空为假时 
	{
		cout<<pq.top() .name<<" : "<<pq.top() .score<<endl;
		pq.pop() ;
	}
	return 0;   
}

二:

#include<vector>//所谓“vector”,即矢量(向量).
#include<iostream>
using namespace std;
//重载“()”操作符 
struct myComp
{
	bool operator ()(const int &a,const int &b)
	{   //从小到大排列采用“>”号;如果要由大到小,则采用“>”号。 
		return a<b;
	}
 } ;
 int main(int argc,char *argv[])
 {  //定义优先队列,元素类型为Info结构体,显式说明内部结构是vector 
 	priority_queue<int,vector<int>,myComp>pq;
 	//入队 
 	pq.push(1);
	pq.push(9);
	pq.push(2);
	pq.push(30);
	//元素全部出队 
	while(pq.empty() !=true)
	{   //返回队首元素 
		cout<<pq.top() <<" ";
		//出队,删除队首元素 
		pq.pop() ;
		}  
	cout<<endl;
	return 0;  
 }



版权声明:本文为blacksleeping原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。