1: //priority_queue01.cpp
3: #include <iostream>
4: #include <queue>
5: using namespace std;
7: int main()
8: {
9: cout << "\nThis program illustrates a simple priority queue of "
10: "integers, including a\ndefault constructor, a copy constructor, "
11: "and the push(), pop(), top(), empty()\nand size() member "
12: "functions of the STL priority_queue interface.";
13: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
15: priority_queue<int> pq1;
16: pq1.push(19);
17: pq1.push(35);
18: pq1.push(46);
19: pq1.push(11);
20: pq1.push(27);
22: //Make a copy of pq1 for later use, before destroying
23: //pq1 when its values are displayed.
24: priority_queue<int> pq2(pq1);
26: cout << "\nThe priority queue pq1 contains "
27: << pq1.size() << " elements.";
28: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
30: cout << "\nHere they are, in priority order:\n";
31: //This is the proper way to access the elements of a priority queue:
32: while(!pq1.empty())
33: {
34: cout << "Popping: ";
35: cout << pq1.top() << "\n";
36: pq1.pop();
37: }
38: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
40: cout << "\nBefore displaying the contents of the priority queue "
41: "pq2, which was a copy\nof pq1, we add to it the values 75 and "
42: "5, in that order.";
43: pq2.push(75);
44: pq2.push(5);
45: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
47: cout << "\nNow here are the new contents of pq2, in priority order:\n";
48: while(!pq2.empty())
49: {
50: cout << "Popping: ";
51: cout << pq2.top() << "\n";
52: pq2.pop();
53: }
54: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
55: }