开始acm暑训的第一天,首先学习了一系列的STL,队列在c++课本上已经有过了,而优先队列则是它的更进一步。
首先,使用优先队列要有头文件,标明 #include <queue>。
优先队列相当于一个会自动排序的数组,关于排序的设置,大致有两种形式:
1.声明结构体,在结构体内重载运算符"<",例如:
struct Student
{ string name;
int score; 这是从大到小的排序
bool operator <(Student &st)
{ return score<st.score;
}
2.使用less,greater。less是从大到小,greater是从小到大。
priority_queue<int,vector<int>,less<int
> >q;
priority_queue<int,vector<int>,greater<int> >q;
注意:最后的> >中间要有空格,不可以连在一起。
优先队列中还有一系列的函数:
q.pop(); 删除q中第一个数 q.top(); 获得q中第一个数
q.back( ); 获得q中最后一个数 q.push(k); 将k放入q的最后
q.size( ); 获得q中元素的个数 q.empty(); 判断q是否为空,空返回0,否则返回1
最后关于优先队列的声明格式:
priority_queue<int>q;
priority_queue<double>q;