美文网首页
vector与堆

vector与堆

作者: 李相赫的乐芙兰 | 来源:发表于2018-05-08 13:33 被阅读5次

今天在看a*寻路的代码时看到了pop_heap的操作,之前都是用优先权队列来做类似的事,所以补一下知识

vector<int> v;

make_heap(v.begin(),v.end());///将当前vector构造成一个最大堆

vector不能从头部插入或删除元素,所以删除最大元素操作:

pop_heap(v.begin(),v.end());///第一步,将最大元素放到末尾,

v.pop_back();///第二步弹出最大元素

插入一个元素

v.push_back(x);

push_heap(v.begin(),v.end());///执行这一步时,之前的vector必须时保持堆形态,如果不是堆形态会报错

sort_heap(v.begin(),v.end());///堆排序,vecot必须时堆形态

总结:make_heap构造一个堆,其他堆操作都需要保证vector是堆形态

堆的应用:动态计算一个序列的中位数

维护一个最大堆,一个最小堆,当插入一个元素时,插入到元素个数较少的那个堆中

与优先权队列的效率比较:

执行1000w次插入和删除操作

优先权队列:33s

vector+heap:37s

相关文章

  • vector与堆

    今天在看a*寻路的代码时看到了pop_heap的操作,之前都是用优先权队列来做类似的事,所以补一下知识 vecto...

  • 问题

    stl用过哪些, vector的内存分配问题,vector和list的应用场景 堆和栈的分别,优缺点,堆的大小是多...

  • OpenCV实现Mat与vector,Mat与数组互转

    OpenCV实现Mat与vector互转opencv Mat与Vector、Mat与数组、Vector与数组之间互...

  • c++常用数据结构

    问题:vector与数组的区别? 1、vector vector v;//创建vector v....

  • C++ vector拷贝与引用

    vector的拷贝与引用与普通的变量相似,实例如下: //拷贝 vector adder_cp(vector ...

  • 2020-10-09 Vec3b Vec3f

    就相当于 vector 与 vector

  • C++STL容器——vector容器

    vector 向量(vector)是动态数组,在堆中分配内存,元素连续存放,有保留内存,如果减少大小后,内存也不会...

  • LeetCode 动态规划L1

    开二维数组dp[][] 且i与j下标都从1开始: vectordp(len1+1,vector ...

  • Nullable相关

    可空: Nullable position = null; 与Vector3? position...

  • STL ---deque

    vector 与 deque 的差别 deque与vector的主要区别 - zhuyf87 - 博客园 http...

网友评论

      本文标题:vector与堆

      本文链接:https://www.haomeiwen.com/subject/ovnirftx.html