当前位置: 首页 > news >正文

做没有好的网站你懂的房产网站制作模板

做没有好的网站你懂的,房产网站制作模板,全国城乡和住房建设厅查询网,自己服务器可以做网站priority_queue比较规则 std::priority_queue实际上就是一个堆#xff0c;可用于堆排序。 std::priority_queue是C STL中的一个容器适配器#xff0c;它提供常数时间查找最大元素的功能。默认情况下#xff0c;它使用元素的运算符进行排序#xff08;升序#xff09…priority_queue比较规则 std::priority_queue实际上就是一个堆可用于堆排序。 std::priority_queue是C STL中的一个容器适配器它提供常数时间查找最大元素的功能。默认情况下它使用元素的运算符进行排序升序所以最大的元素总是位于队列的顶部。然后如果你想自定义排序规则你需要提供自己的比较函数可以通过在定义std::priority_queue时传入一个比较函数对象来实现。 默认情况下标准库在元素类型上使用运算符来确定相对优先级priority_queue中默认less建大根堆在自定义类型时会调用operator,若返回true,说明此此元素的父节点小于此节点需要向上调整。所以priority_queue默认使用时而又想建小堆要重载operator需要return a.xb.x方可。 比较函数对象 让priority_queue按照元素的相反顺序排序我们传递了std::greaterint作为比较函数对象给std::priority_queue这使得队列以相反的顺序排序即最小的元素总是在队列的顶部。 #include queue #include vector #include functionalint main() {// 使用greaterint作为比较函数对象创建优先队列使队列按照元素的相反顺序排序std::priority_queueint, std::vectorint, std::greaterint pq; // 小根堆// greaterpairint,int // lesspairint,int// 向队列添加元素pq.push(3);pq.push(5);pq.push(1);// 打印并移除队列顶部的元素由于比较函数对象为greaterint因此打印的顺序为135while(!pq.empty()) {std::cout pq.top() ;pq.pop();}return 0; }自定义函数比较对象 在C中priority_queue的默认行为是生成大根堆。如果想要生成小根堆可以使用构造函数的第三个参数传入一个自定义的比较函数。对于类型为pairint, pairint,int的小根堆可以定义一个比较函数如下 struct cmp {bool operator() (pairint, pairint,int a, pairint, pairint,int b) {if(a.first b.first) {return true;} else if(a.first b.first) {if(a.second.first b.second.first) {return true;} else if(a.second.first b.second.first a.second.second b.second.second) {return true;}}return false;} };然后在定义priority_queue的时候使用这个比较函数 //我们定义了一个小根堆堆的元素是pairint, pairint,int类型的使用自定义的比较函数cmp对元素进行排序。 priority_queuepairint, pairint,int, vectorpairint, pairint,int, cmp pq; // 当然也可以使用lambda重载运算符 需要注意的是当使用重载运算符定义排序规则时我们必须保证对所有可能的元素组合具有对称性和传递性以确保排序规则的正确性也就是说自定义比较时不能出现 或 这样破坏严格弱排序的定义规则。 #include queue #include iostreamclass MyClass { public:int value;MyClass(int val) : value(val) {}// 重载小于运算符bool operator(const MyClass other) const {return this-value other.value; // 注意我们实际定义的是大于} };int main() {std::priority_queueMyClass pq;pq.push(MyClass(3));pq.push(MyClass(5));pq.push(MyClass(1));while (!pq.empty()) {std::cout pq.top().value ;pq.pop();}return 0; }
http://www.pierceye.com/news/445929/

相关文章:

  • 宜昌网站建设制作公司网站301在哪做
  • 备案网站分布地点wordpress如何去掉amp:
  • 做一个小说阅读网站怎么做网站 没有备案 访问不了
  • 乐山乐人网站建设公司网站域名查主机名
  • 自适应网站的代表腰肌劳损的自我治疗和恢复的方法有什么?
  • 玉环城乡建设规划局网站企业网站源码带后台
  • 网站热点关键词免费可商用素材网站
  • 网站站内优化案例自己做的网页怎么上传网站吗
  • 深圳制作网站有用吗如何做网站优化
  • 皖住房建设厅网站the 7 wordpress
  • 怎么自己学着做网站写网站代码
  • 自己电脑上做的网站 怎么让别人看怎么做网站在谷歌
  • 同一ip 网站 权重怎样做才能发布你的网站
  • 上海利恩建设集团有限公司网站社交网站先做pc站可以吗
  • 用网站做淘宝客新媒体销售好做吗
  • 手机模板的网站哪个好wordpress关闭google字体
  • 医疗行业网站怎么做网站反链和外链的区别
  • html网站开发事例教程一起做网店官网下载
  • 中小企业网站优化锦州网站制作公司
  • 谁会在掏宝网上做网站网站开发与设计课程设计
  • 公司网站建设的改进的建议前潮网络网站建设
  • 济宁500元网站建设wordpress 安装错误
  • 网站建设周记网站建设公司面临的问题
  • 网站可视化编辑普通网站与营销型网站有什么区别
  • 网站 手机 微信 app福建网站开发企业
  • 台州网站制作推广net网站开发教程
  • seo的网站点个赞科技 网站制作
  • 百合网 网站 开发做推广都有什么网站
  • 娄底建设网站的公司wordpress 五色可选
  • 椒江网站建设公司企业网站建设合同书模板