小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

優(yōu)先隊列學習

 印度阿三17 2019-02-26

一、相關定義

優(yōu)先隊列容器與隊列一樣,只能從隊尾插入元素,從隊首刪除元素。但是它有一個特性,就是隊列中最大的元素總是位于隊首,所以出隊時,并非按照先進先出的原則進行,而是將當前隊列中最大的元素出隊。這點類似于給隊列里的元素進行了由大到小的順序排序。元素的比較規(guī)則默認按元素值由大到小排序,可以重載“<”操作符來重新定義比較規(guī)則。

二、priority_queue

基本操作:

empty()    ??如果隊列為空,則返回真

pop()    刪除對頂元素,刪除第一個元素

push()    ? ??加入一個元素

size()     ?返回優(yōu)先隊列中擁有的元素個數(shù)

top()     返回優(yōu)先隊列對頂元素,返回優(yōu)先隊列中有最高優(yōu)先級的元素

在默認的優(yōu)先隊列中,優(yōu)先級高的先出隊。在默認的int型中先出隊的為較大的數(shù)。

頭文件:

#include?<queue> ? 下面看最基本的用法:從大到小輸出
#include <iostream>
#include<queue>
#include<algorithm>
using namespace std;

int main(){
    priority_queue<int>que;//采用默認優(yōu)先級構造隊列

    for(int i=0;i<10;i  )
    {
        int x=rand();
        que.push(x);
    }
    cout<<"采用默認優(yōu)先關系:"<<endl;
    while(!que.empty())//從大到小的順序 
    {
        cout<<que.top()<<" ";
        que.pop();
    }
    cout<<endl;
    return 0;
}

?

?

下面是按照從小到大輸出? greater的用法

#include <iostream>
#include<queue>
#include<algorithm>
#include<vector>
using namespace std;

int main()
{
    priority_queue<int,vector<int>,greater<int> >que;//采用默認優(yōu)先級構造隊列

    for(int i=0;i<10;i  )
    {
        int x=rand();
        que.push(x);
    }
    cout<<"采用greater的優(yōu)先關系:"<<endl;
    while(!que.empty())//從小到大輸出 
    {
        cout<<que.top()<<" ";
        que.pop();
    }
    cout<<endl;
    return 0;
}

?

下面看結構體的使用

#include <iostream>
#include<queue>
#include<algorithm>
#include<vector>
using namespace std;

struct number1
{
    int x;//下面兩種都可以 
    /*
    bool operator < (const number1 &a) const
    {
        return x>a.x;
    }*/
    friend bool operator < (number1 a,number1 b)
    {
        return a.x>b.x;//x小的優(yōu)先級大 
    }
};

int main()
{
    priority_queue<number1>que;//

    for(int i=0;i<10;i  )
    {
        int x=rand();
        number1 n;
        n.x=x;
        que.push(n);
    }
    cout<<"采用結構體定義的優(yōu)先關系:"<<endl;
    while(!que.empty())//從小到大 
    {
        cout<<que.top().x<<" ";
        que.pop();
    }
    cout<<endl;
    return 0;
}

?

?

來源:http://www./content-4-124401.html

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多