C Priority Queue 優先佇列

2022-05-14 01:24:46 字數 2903 閱讀 6935

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

c priority queue 優先佇列

priority queue syntax in their implementation in the c standard template library,priority queues take three template parameters 1 2 template class t,c...

c priority queue優先順序佇列

當需要獲取到最大最小元素值,而又不想用最大最小堆的原生實現,stl提供了更簡單的庫,就是priority queue,其時間複雜度也只有o n logn o nlogn o nlog n priority queue的本質是乙個堆,其相對於queue的不同之處在於 優先佇列實現了內部自動排序,可根據...

C priority queue的模擬實現

priority queue 1 優先佇列是一種容器介面卡,根據嚴格的弱排序標準,它的第乙個元素總是它所包含的元素中最大的。2 此上下文類似於堆,在堆中可以隨時插入元素,並且只能檢索最大堆元素 優先佇列中位於頂部的元素 3 優先佇列被實現為容器介面卡,容器介面卡即將特定容器類封裝作為其底層容器類,q...