这篇文章主要介绍“C++中sort()函数和priority_queue容器的区别是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中sort()函数和priority_queue容器的区别是什么”文章能帮助大家解决问题。
普通的queue是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。
priority_queue中元素被赋予优先级。在创建的时候根据优先级进行了按照从大到小或者从小到大进行了自动排列(大顶堆or小顶堆)。可以以O(log n) 的效率查找一个队列中的最大值或者最小值;
虽然两者第三个参数默认的都是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;
}
运行结果
则:
sort()排序是从小到大,即less是升序;
priority_queue是大顶堆,输出之后是从大到小,即降序;
#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;
}
};
关于“C++中sort()函数和priority_queue容器的区别是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://blog.csdn.net/wtl666_6/article/details/129215981