less & greater 参数在sort和priority_queue中的作用

less<> & greater<>

这个参数在sort和priority_queue中的作用是完全相反的:
在sort排序中,less< typename>()的作用是升序排序(从小到大)
但是在priority_queue中,less< typename> 的作用是降序排列(大顶堆)

但是他们的共同之处就是:
less<>也好,less<>()也罢,都是遵顼它们的默认次序排列的,比如sort默认是从小到大排序,而优先队列则默认是从大到小排列

实验代码:

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

实验结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44274276/article/details/105449490