C++ STL中priority_queue的成员函数
queue 提供了成员函数 front( )和 back( ), 但 priority_queue 没有。表 24.3 简要地介绍了 priority_queue
的成员函数。
函数 描述
push() 在优先级队列中插入一个元素 numsInPrioQ.push (10);
pop() 删除队首元素,即最大的元素 numsInPrioQ.pop ( );
top() 返回指向队列中最大元素(即队首元素)的引用 numsInPrioQ. cout << "The largest element inpriority queue is: " << numsInPrioQ.top ( );
empty() 检查优先级队列是否为空并返回一个布尔值 if (numsInPrioQ.empty ( )) cout << “The queue is empty!”;
size() 返回优先级队列中的元素个数 size_t nNumElements = numsInPrioQ.size ( );
从该表可知,只能使用 top( )来访问队列的成员,该函数返回值最大的元素,最大的元素是根据用
户指定的谓词或默认的 std::less 确定的。
要在 priority_queue 中插入元素,可使用成员方法 push( ):
numsInPrioQ.push (5); // elements are organized in sorted order
要在 priority_queue 开头删除元素,可使用 pop( ):
numsInPrioQ.pop (); // removes element at front
程序清单 24.6 演示了如何使用 priority_queue 的成员函数。
0: #include <queue>
1: #include <iostream>
2:
3: int main ()
4: {
5: using namespace std;
6:
7: priority_queue <int> numsInPrioQ;
8: cout << "Inserting {10, 5, -1, 20} into the priority_queue" << endl;
9: numsInPrioQ.push (10);
10: numsInPrioQ.push (5);
11: numsInPrioQ.push (-1);
12: numsInPrioQ.push (20);
13:
14: cout << "Deleting the " << numsInPrioQ.size () << " elements" << endl;
15: while (!numsInPrioQ.empty ())
16: {
17: cout << "Deleting topmost element: " << numsInPrioQ.top () << endl;
18: numsInPrioQ.pop ();
19: }
20:
21: return 0;
22: }
输出:
Inserting {10, 5, -1, 20} into the priority_queue
Deleting the 4 elements
Deleting topmost element: 20
Deleting topmost element: 10
Deleting topmost element: 5
Deleting topmost element: -1