C++语法——make_heap、push_heap、pop_heap、sort_heap使用介绍
时间: 2023-09-11 21:09:31 浏览: 195
make_heap、push_heap、pop_heap和sort_heap都是C++ STL库中的算法,用于操作堆(heap)数据结构。
1. make_heap:将一个无序的区间转换为堆。函数原型如下:
```
template <class RandomAccessIterator>
void make_heap (RandomAccessIterator first, RandomAccessIterator last);
```
其中,first和last分别为区间的起始和结束迭代器。make_heap函数会将[first,last)区间转换为堆。调用该函数后,该区间的最大元素会被放在第一个位置上。
2. push_heap:将一个元素添加到堆中。函数原型如下:
```
template <class RandomAccessIterator>
void push_heap (RandomAccessIterator first, RandomAccessIterator last);
```
其中,first和last分别为区间的起始和结束迭代器。当前,[first,last-1)已经是一个堆,push_heap函数将last-1位置的元素添加到堆中,并且保证该堆仍然是一个堆。
3. pop_heap:将堆的最大元素移动到末尾。函数原型如下:
```
template <class RandomAccessIterator>
void pop_heap (RandomAccessIterator first, RandomAccessIterator last);
```
其中,first和last分别为区间的起始和结束迭代器。当前,[first,last)已经是一个堆,pop_heap函数将该堆的最大元素(即first位置的元素)移动到last-1位置,并且保证[first,last-1)仍然是一个堆。
4. sort_heap:将一个堆排序。函数原型如下:
```
template <class RandomAccessIterator>
void sort_heap (RandomAccessIterator first, RandomAccessIterator last);
```
其中,first和last分别为区间的起始和结束迭代器。当前,[first,last)已经是一个堆,sort_heap函数会将该堆转换为有序序列。
需要注意的是,这几个函数都要求操作的区间是一个随机访问迭代器(RandomAccessIterator)类型的迭代器。
阅读全文