c++自帶優先隊列用法(據說比手打慢):
定義:priority_queue<
數據類型,
容器類型, 比較方式>
(寫在定義數組的位置)
//升序隊列 (這裏一定要有空格,不然成了右移運算符↓)
priority_queue <int,vector<int>,greater<int> > q;
//降序隊列(這裏一定要空格,不然成了右移運算符↓)
priority_queue <int,vector<int>,less<int> >q;
priority_queue <int> q
不寫容器類型、比較方式的話默認是大根堆。
要用頭文件<queue> ,記得開命名空間。
至於爲什麼greater是小根堆,less是大根堆,似乎可以這樣理解:
我們手打堆的時候,是不是有個從堆頂往下移的操作?就是說如果堆頂>兒子就往下移(小根堆),所以greater就是表示那個大於號……