C++ 堆操作
什么是堆?
在数据结构中,堆(Heap)是一种特殊的完全二叉树。根据其性质,堆可以分为两种类型:
- 最大堆(Max Heap): 父节点的值总是大于或等于其子节点的值
- 最小堆(Min Heap): 父节点的值总是小于或等于其子节点的值
在C++ STL中,提供了一系列函数来操作容器中的元素,使其满足堆的性质。这些函数都位于<algorithm>
头文件中。
备注
C++ STL中的堆操作默认构建的是最大堆,即堆顶元素是最大值。
C++ STL中的堆操作函数
1. make_heap
- 构建堆
make_heap
函数用于将指定范围内的元素重新排列,使其满足堆的性质。
语法:
void make_heap(RandomAccessIterator first, RandomAccessIterator last);
void make_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp);
示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {4, 10, 3, 5, 1};
std::make_heap(v.begin(), v.end());
std::cout << "堆顶元素: " << v.front() << std::endl;
std::cout << "堆中所有元素: ";
for(int num : v) {
std::cout << num << " ";
}
return 0;
}
输出:
堆顶元素: 10
堆中所有元素: 10 5 3 4 1