C++ STL堆操作
2024-08-31 13:56:49
/* STL 最大堆、最小堆的应用 */
#include <iostream>
#include <vector>
#include <algorithm> // using namespace std; /*
STL 堆操作
(1)make_heap()构造堆
void make_heap(first_pointer,end_pointer,compare_function);
默认比较函数是(<),即最大堆。
函数的作用是将[begin,end)内的元素处理成堆的结构 (2)push_heap()添加元素到堆
void push_heap(first_pointer,end_pointer,compare_function);
新添加一个元素在末尾,然后重新调整堆序。该算法必须是在一个已经满足堆序的条件下。
先在vector的末尾添加元素,再调用push_heap (3)pop_heap()从堆中移出元素
void pop_heap(first_pointer,end_pointer,compare_function);
把堆顶元素取出来,放到了数组或者是vector的末尾。
要取走,则可以使用底部容器(vector)提供的pop_back()函数。
先调用pop_heap再从vector中pop_back元素 (4)sort_heap()对整个堆排序
排序之后的元素就不再是一个合法的堆了。
*/ //最大堆
struct MaxHeapCmp
{
inline bool operator()(const int &x,const int &y)
{
return x < y;
}
}; //最小堆
struct MinHeapCmp
{
inline bool operator()(const int &x, const int &y)
{
return x > y;
}
}; void test()
{
std::vector<int> data{ ,,,,,,, }; //堆排序
std::make_heap(data.begin(), data.end(), MinHeapCmp());
for (int n : data)
{
cout << n << endl;
} printf("------------------\n"); //添加元素
data.push_back();
//再次堆排序
std::push_heap(data.begin(), data.end(), MaxHeapCmp());
for (int n : data)
{
cout << n << endl;
}
} int main()
{
test();
printf("-ok-\n");
getchar(); return ;
}
最新文章
- SQLite文件查看工具DB Browser for SQLite
- html5学习笔记一
- iOS 多快好省的宏定义
- cmd下常用的一些命令
- 步进循环语句for
- 安装aptana插件报Error opening the editor. java.lang.NullPointerException
- Android 官方文档:(二)应用清单 —— 2.26 &;lt;uses-permission&;gt;标签
- 201521123113 《Java程序设计》第4周学习总结
- 从分布式一致性到共识机制(一)Paxos算法
- Linux--FTP和MAIL服务器
- Mybatis的resultType
- 157. [USACO Nov07] 奶牛跨栏
- 通过sql语句修改表的结构
- 多分类评价指标python代码
- Android自定义组合控件详细示例 (附完整源码)
- linux 安装mysql8.0
- 记linux下rm误删bin文件的解决方式
- PAT甲 1012. The Best Rank (25) 2016-09-09 23:09 28人阅读 评论(0) 收藏
- cmd命令和加密文件玩法
- [bzoj4515][Sdoi2016]游戏-树链剖分+李超线段树