queue(队列)
-
定义:queue <int> a;
-
插入队尾:a.push(x);
-
查询队尾:a.back();
-
查询队首:a.front();
-
删除队首:a.pop();
-
查询长度:a.size();
-
判断队列为空:q.empty()
-
清空只能慢慢pop。
priority_queue(优先队列/堆)
基本操作:
q.empty()
如果队列为空,则返回真
q.pop()
删除对顶元素,删除第一个元素
q.push()
加入一个元素
q.size()
返回优先队列中拥有的元素个数
q.top()
返回优先队列中有最高优先级的元素 在默认的优先队列中,优先级高的先出队。在默认的int型中先出队的为较大的数
声明方式:
priority_queue<int> q;
//通过操作,按照元素从小到大的顺序出队 priority_queue<int,vector<int>, greater<int> > q;
//通过操作,按照元素从大到小的顺序出队 (less<int>)
结构体声明方式:(和sort一样)
struct node {
int x, y;
bool operator < (const node &a)const
{
return x > a.x; //结构体中,x小的优先级高
}
};
priority_queue<node>q; //定义方法
//在该结构中,y为值, x为优先级。
//通过自定义operator<操作符来比较 元素中的优先级。
//在重载”<”时,最好不要重载”>”, 可能会发生编译错误