这个参数在sort和priority_queue中的做用是彻底相反的:
在sort排序中,less< typename>()的做用是升序排序(从小到大)
可是在priority_queue中,less< typename> 的做用是降序排列(大顶堆)ios
可是他们的共同之处就是:
less<>也好,less<>()也罢,都是遵顼它们的默认次序排列的,好比sort默认是从小到大排序,而优先队列则默认是从大到小排列markdown
#include <iostream> #include <algorithm> #include <queue> using namespace std; int main() { /* 验证 less<> 参数在sort排序中的做用 */ int n, a[20]; cin >> n; for (int i = 0; i < n; ++i) cin >> a[i]; sort(a, a + n, less<int>());// 从小到大排序 for (int i = 0; i < n; ++i) cout << a[i] << ' '; /* 验证 less<> 参数在优先队列的做用 */ priority_queue<int, vector<int>, less<int> > q;// 从大到小排序(降序) for (int i = 0; i < n; ++i) { int a; cin >> a; q.push(a); } while (!q.empty()) { cout << q.top() << ' '; q.pop(); } return 0; }