为了账号安全,请及时绑定邮箱和手机立即绑定

您好,关于数组经过c++堆栈输出的顺序有变化?

您好,关于数组经过c++堆栈输出的顺序有变化?

白猪掌柜的 2021-12-16 19:11:38
#include <vector>#include <algorithm>#include <iostream>using namespace std;void main(){vector<int> v;v.push_back(5);v.push_back(6);v.push_back(4);v.push_back(8);v.push_back(2);v.push_back(3);v.push_back(7);v.push_back(1);v.push_back(9);make_heap(v.begin(),v.end());v.push_back(20);push_heap(v.begin(),v.end());vector<int>::iterator ilocation;for(ilocation=v.begin();ilocation!=v.end();ilocation++)cout<<*ilocation<<' ';cout<<endl;pop_heap(v.begin(),v.end());for(ilocation=v.begin();ilocation!=v.end();ilocation++)cout<<*ilocation<<' ';cout<<endl;}以上是写的C++源代码!什么是谓词排序啊?能不能说明白些,谢谢。对于输入,输出的顺序可测吗?
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

堆是如二叉树组织的元素的序列。 每个堆元素对应于树节点。 第一个值顺序 [首先。最后) 是在的根目录,并谓词按排序。 例如,如果谓词是更大的 <int>,堆中的每个元素满足以下 ; 而每个元素是大于或等于父级。 最小的元素存储在该的根,并所有子项都保存逐渐更大的值。

make_heap 函数将 [首先转换范围最后一个) 到一个堆。

sort_heap 函数对排序使用 make_heap 函数创建的"heapified 的序列。

push_heap 函数在堆中插入一个新值。

pop_heap 函数交换由 [first, last),指定在堆中的第一个和最后一个元素,然后减少恢复堆属性前一个序列的长度。

例如
Numbers { 4 10 70 10 30 69 96 100 }

之后调用 make_heap
Numbers { 4 10 69 10 30 70 96 100 }

之后调用 sort_heap
Numbers { 100 96 70 69 30 10 10 4 }

之后调用 push_heap()
Numbers { 4 7 10 30 100 10 70 96 69 }

之后调用 pop_heap
Numbers { 7 30 10 69 100 10 70 96 4 }

查看完整回答
反对 回复 2021-12-19
  • 1 回答
  • 0 关注
  • 321 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信