c++優先佇列類似佇列,但是在這個資料結構中的元素按照一定的斷言排列有序。它的標頭檔案為。由於介面卡不支援迭代,乙個 priority_queue 將有沒有關聯的迭代器。
函式列表:
empty() 如果優先隊列為空,則返回真
pop() 刪除第乙個元素
push() 加入乙個元素
size() 返回優先佇列中擁有的元素的個數
top() 返回優先佇列中有最高優先順序的元素
建構函式
explicit priority_queue(const pred& pr = pred(),
const allocator_type& al = allocator_type());
priority_queue(const value_type *first, const value_type *last,
const pred& pr = pred(), const allocator_type& al = allocator_type());
empty
語法:
bool empty();
empty()函式返回真(true)如果優先隊列為空,否則返回假(false)。
pop
語法:
void pop();
pop()函式刪除優先佇列中的第乙個元素。
push
語法:
void push( const type &val );
push()函式新增乙個元素到優先佇列中,值為val。
size
語法:
size_type size();
size()函式返回優先佇列中儲存的元素個數。
top
語法:
type &top();
top()返回乙個引用,指向優先佇列中有最高優先順序的元素。注意只有pop()函式刪除乙個元素。
示例1:
#include
#include
#include
#include
#include
using namespace std;
#if _msc_ver > 1020 // if vc++ version is > 4.2
using namespace std; // std c++ libs implemented in std
#endif
// using priority_queue with deque
// use of function greater sorts the items in ascending order
typedef deque> intdqu;
typedef priority_queue> intprque;
// using priority_queue with vector
// use of function less sorts the items in descending order
typedef vector> chvector;
typedef priority_queue> chprque;
void main(void)
// insert items in the priority_queue(uses vector)
p.push('c');
p.push('a');
p.push('d');
p.push('m');
p.push('h');
// output the item at the top using top()
cout << p.top() << endl;
// output the size of priority_queue
size_q = p.size();
cout << "size of p is:" << size_q << endl;
// output items in priority_queue using top()
// and use pop() to get to next item until
// priority_queue is empty
while (!p.empty())
}輸出結果:
42size of q is:4
4249
100201
msize of p is:5mh
dca示例2:
#include
#include
using namespace std;
struct cmp
}輸出結果:
201100
4942
示例3(用priority_queue實現哈夫曼樹):
#include
#include
using namespace std;
class node
node(int w): weight(w), left(null), right(null) {}
};class cmp //用於priority_queue的仿函式類
};//傳入的是指標,如果用物件去實現,你就不知道左右指標的指向了
//中序遍歷
void inorder(node* p)
}void freetree(node* p)//銷毀二叉樹
int main()
node* root=q.top();
inorder(root);
cout system("pause"); return 0; }輸出結果: 41 67 34 0 69 24 41 99 0 24 24 58 34 235 67 136 69 priority queue syntax in their implementation in the c standard template library,priority queues take three template parameters 1 2 template class t,c... 當需要獲取到最大最小元素值,而又不想用最大最小堆的原生實現,stl提供了更簡單的庫,就是priority queue,其時間複雜度也只有o n logn o nlogn o nlog n priority queue的本質是乙個堆,其相對於queue的不同之處在於 優先佇列實現了內部自動排序,可根據... priority queue 1 優先佇列是一種容器介面卡,根據嚴格的弱排序標準,它的第乙個元素總是它所包含的元素中最大的。2 此上下文類似於堆,在堆中可以隨時插入元素,並且只能檢索最大堆元素 優先佇列中位於頂部的元素 3 優先佇列被實現為容器介面卡,容器介面卡即將特定容器類封裝作為其底層容器類,q...c priority queue 優先佇列
c priority queue優先順序佇列
C priority queue的模擬實現