STL之优先队列

      开始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;

                   

猜你喜欢

转载自blog.csdn.net/weixin_42702110/article/details/81056164