less & greater 參數在sort和priority_queue中的做用

less<> & greater<>

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

實驗結果:

在這裏插入圖片描述

相關文章
相關標籤/搜索