库中带的堆结构,无法实现更改后再调整,此时需要自己实现
思路:使用一个hash表,保存数据与其对应的下标位置,需要更改时通过下标调整堆结构
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
#include<iostream>
#include<vector>
#include<hash_map>
#include<string>
using namespace std;
//堆中存储数据使用自定义类型
typedef struct Student
{
int id;
int age;
string name;
}Stu;
template<class T>
class heap_adjust
{
public:
void display()
{
for (auto i : data)
cout << i->id << " " << i->name << " " << i->age << endl;
}
void add(T& object)
{
data.push_back(&object);
int i=heapinsert(data.size()-1);
index_table.insert(make_pair(