這個參數在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; }