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;
}

实验结果:

在这里插入图片描述

相关文章
相关标签/搜索