c++ set用法详解
c++ stack用法详解
c++几种重载
c++ queue队列与优先队列
queue
队列是基本的数据结构之一,特点是"先进先出",如我们的日常排队
queue常用操作
在c++ 中,queue的头文件是#include<queue>
queue<int> q; //以int型为例
int x;
q.push(x); //将x放入队列
q.front(); //返回队首元素
q.pop(); //删除队首元素
q.back(); //返回队尾元素
q.size(); //返回q中的元素个数
q.empty(); //检查队列是否为空,若为空返回true,否则返回false
普通队列
#include<iostream>
#include<queue>
using namespace std;
int main()
{
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
q.push(4);
q.push(5);
cout<<"q.size "<<q.size()<<endl;
cout<<"q.front "<<q.front()<<endl; //返回队首元素
cout<<"q.back "<<q.back()<<endl; //返回队尾元素
q.pop(); //删除队首元素
cout<<"q.size "<<q.size()<<endl;
cout<<"q.front "<<q.front()<<endl; //返回队首元素
return 0;
}
对于普通队列的结构体排序,建议阅读 c++几种重载
单元素的优先队列priority_queue<int>
#include<iostream>
#include<queue>
using namespace std;
int main()
{
priority_queue<int> a; //默认大到小
priority_queue<int,vector<int>,greater<int> > b; //小到大
a.push(3);
a.push(2);
a.push(1);
a.push(9);
b.push(3);
b.push(2);
b.push(1);
b.push(9);
while(!a.empty())
{
cout<<a.top()<<" ";
a.pop();
}
cout<<endl;
while(!b.empty())
{
cout<<b.top()<<" ";
b.pop();
}
return 0;
}
多元素的优先队列(结构体)
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
struct node
{
int x,y;
bool operator < (const node &a) const
{
return x<a.x; //按x的值降序序排列
}
}t;
int main()
{
priority_queue<node> q;
t.x=3;
t.y=2;
q.push(t);
t.x=4;
t.y=6;
q.push(t);
t.x=1;
t.y=2;
q.push(t);
while(q.size())
{
t=q.top();
q.pop();
cout<<t.x<<" "<<t.y<<endl;
}
return 0;
}