今天跟著書上說的做了乙個動態模擬的程式,第一次用優先佇列(priority_queue),才發現原來優先佇列是那麼用的,在模擬**的時候還挺好用的。
優先佇列排序的時候,可以自己定義排序的規則。比如先定義乙個:
class comp
};然後定義優先佇列的時候就:
std::priority_queue< event*, std::vector, comp> eventqueue;
這樣,只要 eventqueue.push(aa) 的時候就會呼叫 comp 裡面的比較運算來排序各元素。書上的**裡面,沒有上面那個紅色的部分,跟著書上的做就編譯不了。後來查了 msdn 才知道正確的寫法。不知道是不是作者不小心寫錯了,或者是作者用的 stl 版本和 ms 的不一樣。如果排序方法不對,那麼我的程式裡面的時間順序就不對,結果就不對了。
優先佇列的使用
佇列的特點是先進先出。通常都把佇列比喻成排隊買東西,大家都很守秩序,先排隊的人就先買東西。但是優先佇列有所不同,它不遵循先進先出的規則,而是根據佇列中元素的優先權,優先權最大的先被取出。通常把優先佇列比喻成現實生活中的列印。乙個列印店裡有很多印表機,每台機器的效能不一樣,有的印表機列印很快,有的印表...
C 優先佇列使用
優先佇列 priority queue 普通的佇列是一種先進先出的資料結構,元素在佇列尾追加,而從佇列頭刪除。在優先佇列中,元素被賦予優先順序。當訪問元素時,具有最高優先順序的元素最先刪除。優先佇列具有最高端先出 largest in,first out 的行為特徵。stl中的優先佇列 priori...
優先佇列的使用
堆,一種非常重要的資料結構。能實現資料的自動排序,而且排序時間複雜度為o nlogn 在n達到10 4時,o n2 級演算法就容易超時,但堆排序不會。堆可呼叫stl系統函式,簡化 容易書寫。一般情況,如果堆元素為數 字元 字串都可有用預設的排序規則。如果元素是pair型別,其比較大小的方式為先比較第...