不同函数的cmp参数的作用讨论?

sort中使用greater得到降序序列,首元素是最大的(vector做容器)
那为什么priority_queue中使用greater得到的是小顶堆?此时首元素(v[0])最小的啊?

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在C++中,sort()函数和priority_queue容器都可以通过指定不同的cmp参数来改变排序的方式。
-
在sort()函数中,cmp参数是用来定义排序规则的,如果指定为greater,则表示按降序排列。这是因为sort()函数默认按升序排列,而greater函数对象定义的比较规则是倒序排列,所以通过greater函数对象进行排序可以得到降序序列。
-
在priority_queue容器中,指定greater参数表示小顶堆。这是因为priority_queue默认使用less函数对象进行排序,所以指定greater参数后实际上是将less函数对象替换成greater函数对象,而greater函数对象定义的比较规则是倒序排列,所以通过greater函数对象进行排序可以得到小顶堆,即首元素最小的堆。
-
因此,虽然在不同的函数中使用greater参数得到的结果可能不同,但这是因为这些函数的默认排序方式不同,通过指定不同的cmp参数,可以改变排序的方式。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^