priority queue構造方法備忘

2021-06-21 09:56:38 字數 1387 閱讀 9533

#include#include#includeusing namespace std;

struct larger

};int main();

// priority_queue ,larger > q; 1

// priority_queue ,greater> q; 2

// priority_queue q; 3

for(int i=0;i<5;i++)q.push(a[i]);

while(!q.empty())

bool operator < (const node& n)const

};int main();

for(int i=0;i<5;i++)q.push(node(a[i]));

while(!q.empty())

return 0;

}

上面的**輸出:0,2,3,4,6

struct node

bool operator < (const node& n)const

};

node裡的operator < (const node & n)const,兩個const都不能少。

在dev-c中,編譯時去掉上面**中的任何乙個const都會使編譯器轉到stl_function.h的下面這段**

/// one of the @link comparison_functors comparison functors@endlink.

templatestruct less : public binary_function<_tp, _tp, bool>

};

從operator()(const _tp& __x, const _tp& __y) const看出,

第乙個const代表在函式體內,實參不能變,第二個const表示在該函式裡面,結構體的成員變數不能被改變。

所以這個函式在呼叫時,也要遵循上述原則,加上兩個const。

如果不加,就會error

丟掉第乙個const     時:no match for 'operator<'(operator types are 'const node' and 'const node')

丟掉第二個const   時:[error] passing 'const node' as 'this' argument of 'bool node::operator<(const node&)' discards qualifiers [-fpermissive],意為丟棄了實參型別限定

**環境:dev-c和cfree的gcc編譯器mindw5

PriorityQueue實現原理

priorityqueue priorityqueue是個基於優先順序堆的極大優先順序佇列 此佇列按照在構造時所指定的順序對元素排序,既可以根據元素的自然順序來指定排序 參閱 comparable 也可以根據 comparator 來指定 這取決於使用哪種構造方法。優先順序佇列不允許 null 元素...

priority queue 優先佇列)

佇列 先輸入先輸出 優先佇列使用方法 標頭檔案 include using namespace std 宣告方法 1.普通方法 priority queueq 下劃線不可漏,預設從大到小輸出隊 2.結構體宣告方式 struct node int x,y frinend bool operator n...

優先佇列 priority queue

優先佇列 是一種抽象資料型別,行為有些像佇列,但是他不是先進先出型佇列 先出優先佇列的元素是佇列中優先順序最高的元素。就像 急診病人插隊 優先佇列的標頭檔案也是 用 priority queuepq 來宣告。這個pq是乙個越小的整數優先順序越低的優先佇列。出隊元素不是先進隊的元素,出隊的方法由que...