网站安全建设总结,苏晋建设集团网站,网站开发怎么报价,wordpress外链转内链代码普通的queue是一种先进先出的数据结构#xff0c;元素在队列尾追加#xff0c;而从队列头删除。priority_queue中元素被赋予优先级。在创建的时候根据优先级进行了按照从大到小或者从小到大进行了自动排列#xff08;大顶堆or小顶堆#xff09;。可以以O(log n) 的效率查找…普通的queue是一种先进先出的数据结构元素在队列尾追加而从队列头删除。priority_queue中元素被赋予优先级。在创建的时候根据优先级进行了按照从大到小或者从小到大进行了自动排列大顶堆or小顶堆。可以以O(log n) 的效率查找一个队列中的最大值或者最小值; 
虽然两者第三个参数默认的都是less但两者参数比较函数的区别是相反的 小细节 sort中需要传对象得less()priority_queue中需要传类型less即可; less情况 
#includeiostream
#includevector
#includequeue
using namespace std;int main()
{vectorintarr2  {3,2,1};sort(arr2.begin(),arr2.end(),lessint());//输出sort()之后的vectorfor (int i  0; i  3; i) {cout  arr2[i]   ;}cout  endl;priority_queueint,vectorint,lessintarr;arr.push(3);arr.push(2);arr.push(1);//输出priority_queuewhile (!arr.empty()) {coutarr.top() ;arr.pop();}cout  endl;return 0;
}运行结果  则 
sort排序是从小到大即less是升序;priority_queue是大顶堆输出之后是从大到小即降序; 
greater情况 
#includeiostream
#includevector
#includequeue
using namespace std;int main()
{vectorintarr2  {3,2,1};sort(arr2.begin(),arr2.end(),greaterint());//输出sort()之后的vectorfor (int i  0; i  3; i) {cout  arr2[i]   ;}cout  endl;priority_queueint,vectorint, greaterintarr;arr.push(3);arr.push(2);arr.push(1);//输出priority_queuewhile (!arr.empty()) {coutarr.top() ;arr.pop();}cout  endl;return 0;
}运行结果:  
则 sort排序是从大到小即greater是降序; priority_queue是小顶堆输出之后是从小到大即升序; 
自定义比较函数情况 struct cmp1 //等价于less的内部构造效果和上面分析的less情况一样
{opeartor()(data x1,data x2){return x1x2;}
};struct cmp2 //等价于less的内部构造效果和上面分析的greater情况一样
{opeartor()(data x1,data x2){return x1x2;}
};总结 
当比较函数是x1.datax2.data时: 等价于less 
sort()最终会把序列处理成升序priority_queue会处理成大根堆–遍历输出为降序结构; 
当比较函数是x1.datax2.data时:等价于greater 
sort()最终会把序列处理成降序priority_queue会处理成小根堆–遍历输出为升序结构; 他俩是反着的