目录前言less情况greater情况自定义比较函数情况总结前言 普通的queue是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。priority_queue中元素被赋予
虽然两者第三个参数默认的都是less,但两者参数比较函数的区别是相反的:
小细节 sort中需要传对象,得less(),priority_queue中需要传类型less即可;
#include<iOStream>
#include<vector>
#include<queue>
using namespace std;
int main()
{
vector<int>arr2 = {3,2,1};
sort(arr2.begin(),arr2.end(),less<int>());
//输出sort()之后的vector
for (int i = 0; i < 3; i++) {
cout << arr2[i] << ' ';
}
cout << endl;
priority_queue<int,vector<int>,less<int>>arr;
arr.push(3);
arr.push(2);
arr.push(1);
//输出priority_queue
while (!arr.empty()) {
cout<<arr.top()<<' ';
arr.pop();
}
cout << endl;
return 0;
}
运行结果
则:
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int main()
{
vector<int>arr2 = {3,2,1};
sort(arr2.begin(),arr2.end(),greater<int>());
//输出sort()之后的vector
for (int i = 0; i < 3; i++) {
cout << arr2[i] << ' ';
}
cout << endl;
priority_queue<int,vector<int>, greater<int>>arr;
arr.push(3);
arr.push(2);
arr.push(1);
//输出priority_queue
while (!arr.empty()) {
cout<<arr.top()<<' ';
arr.pop();
}
cout << endl;
return 0;
}
运行结果:
则:
sort()排序是从大到小,即greater是降序;
priority_queue是小顶堆,输出之后是从小到大,即升序;
struct cmp1 //等价于less的内部构造,效果和上面分析的less情况一样
{
opeartor()(data x1,data x2){
return x1<x2;
}
};
struct cmp2 //等价于less的内部构造,效果和上面分析的greater情况一样
{
opeartor()(data x1,data x2){
return x1>x2;
}
};
当比较函数是x1.data<x2.data时: 等价于less
当比较函数是x1.data>x2.data时:等价于greater
他俩是反着的
到此这篇关于c++中sort()函数和priority_queue容器中比较函数的区别的文章就介绍到这了,更多相关C++比较函数的区别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: C++中sort()函数和priority_queue容器中比较函数的区别详析
本文链接: https://www.lsjlt.com/news/198815.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0