C++ STL Heap简单使用

本文详细介绍了如何使用C++标准库中的<algorithm>和<vector>来创建并操作堆。通过示例代码,展示了如何利用make_heap、push_heap和pop_heap函数结合lambda表达式和自定义比较类来实现堆的建立、元素的插入与删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用#include <algorithm> 和 #include <vector> 建立一个堆

make_heap  建立堆(传递参数lambada表达式) 

压数据进堆 push_heap       弹数据出堆 pop_heap (其实只是放在vector最后一个)

 

    class greater_class{
    public:
    bool operator()(int a, int b)
    {
        return a > b;
    }
   
    int arr[] = {5,1,6,9,4,3};
    vector<int> num(arr,arr+6);
    printVector(num);
    make_heap(num.begin(), num.end(),[](int a,int b){return a>b;});
    printVector(num); // 1 4 3 9 5 6
    num.push_back(2);
    printVector(num); // 1 4 3 9 5 6 2
    push_heap(num.begin(),num.end(),greater_class());
    printVector(num); // 1 4 2 9 5 6 3
    while (num.size())
    {
        pop_heap(num.begin(),num.end(),greater_class());
        long min = num.back();
        num.pop_back();cout << min << std::endl;
    } // 1 2 3 4 5 6 9 6 9

 

附:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值