bool myCmp(int a, int b) {
// 比较a和b的个位数
return a % 10 < b % 10;
}
int main() {
srand(time(NULL));
// 默认情况下,最大堆
priority_queue<int> pq;
for (int i = 0; i < 10; ++i) {
int num = rand() % 100;
pq.push(num);
cout << "insert " << num << " in priority queue." << endl;
}
while (!pq.empty()) {
cout << pq.top() << " ";
pq.pop();
}
cout << endl << endl;
// 底层最小堆
priority_queue<int, vector<int>, greater<int>> pq2;
for (int i = 0; i < 10; ++i) {
int num = rand() % 100;
pq2.push(num);
cout << "insert " << num << " in priority queue." << endl;
}
while (!pq2.empty()) {
cout << pq2.top() << " ";
pq2.pop();
}
cout << endl << endl;
// 使用自定义Comparator的priority queue
priority_queue<int, vector<int>, function<bool(int, int)>> pq3(myCmp);
for (int i = 0; i < 10; ++i) {
int num = rand() % 100;
pq3.push(num);
cout << "insert " << num << " in priority queue." << endl;
}
while (!pq3.empty()) {
cout << pq3.top() << " ";
pq3.pop();
}
return 0;
}