【STL】常用容器总结,带有复习性质的学习更有效率;
【Heap】 在STL中不是以容器的方式呈现的,而是以算法的方式;
所谓堆,其实就是将数组假想成完全二叉树,满足某种规则的呈现。
某种规则就是堆顶(数组第一个元素)始终为最大或者最小的元素,还可以结合数组连续性的特性进行堆排序;
堆分为 max heap 和 min heap, STL默认的是 max heap , 所以下面实现的时候也会实现为最大堆;
在自己再次去实现它的时候,我们先来使用一下它;
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
int arr[] = {
2,31,5,7,45,87};
vector<int> v(arr, arr+6);
make_heap(v.begin(), v.end()); //构造堆,看看第一个位置是否发生变化;
cout<<v[0]<<endl;
v.push_back(99);
push_heap(v.begin(), v.end());
cout<<v[0]<<endl; //新加入一个99
sort_heap(v.begin(), v.end()); //堆排序
for(int