C++ heap堆的使用

堆的基本操作

  • make_heap() 默认最大堆,最小堆加参数greater< int >()
  • pop_heap() 先pop,然后在容器中删除
  • push_heap() 先在容器中加入,再push
  • sort_heap()
#include
#include
#include
 
using namespace std;
template<typename Container>
void PrintContainer(Container container)
{
    for (auto i : container)
    {
        cout << i << ' ';
    }
    cout << endl;
}
int main()
{
    int a[] = {10, 50, 40, 20, 30};
    vector<int> ivec(a, a+5);
    PrintContainer(ivec);
 
    make_heap(ivec.begin(), ivec.end(), greater<int>());//建堆
    PrintContainer(ivec);
 
    pop_heap(ivec.begin(), ivec.end(), greater<int>());//先pop,然后在容器中删除
    ivec.pop_back();
    PrintContainer(ivec);
 
    ivec.push_back(100);//先在容器中加入,再push
    push_heap(ivec.begin(), ivec.end(), greater<int>());
    PrintContainer(ivec);
 
    sort_heap(ivec.begin(), ivec.end());
    PrintContainer(ivec);
 
    return 0;
}

你可能感兴趣的:(c++)