1. 程式人生 > >STL---對STL中的各類常用函式的小總結

STL---對STL中的各類常用函式的小總結

priority_queue模板類有三個模板引數,下面介紹兩種:

//元素型別
priority_queue<int>q;

//容器型別
//1.從小到大排列
priority_queue<int,vector<int>,greater<int> >q;
//2.從大到小排列
priority_queue<int,vector<int>,less<int> >q;

優先佇列,使用示例:

 priority_queue<int,vector<int>,greater<int> >q;
        for(int i=0;i<10;i++)
        {
            scanf("%d",&a);
            q.push(a);
        }
        
        while(!q.empty())
        {
            x = q.top();
            q.pop();
            if(q.empty())
                break;
            printf("%d ",x);
        }

如上述程式碼,若輸入:1,5,4,7,2,9,8,3,10,6這隨機排列的是個數

輸出時,直接就會輸出:1,2,3,4,5,6,7,8,9,10

若定義的時候,把greater換做less,

輸出時,直接就會輸出:10,9,8,7,6,5,4,3,2,1

這就是我理解的優先佇列的好處(PS:可能還有別的,如果我知道我會再加)。

q.push(a);即將a壓入優先佇列q,壓入之後也是會直接到按順序應該在的位置。

訪問優先佇列的隊首元素 q.top() ;

出佇列: q.pop();

入佇列: q.push(x);

判斷優先佇列是否為空: q.empty();