#include
#include
#include
#include
using namespace std;
class V
{
public:
int value;
V* head;
V()
{
this->value=0;
head=this;
}
};
class unionfindset
{
public:
map>*elementmap;
map,vector>*fathermap;
map,int>*sizemap;
unionfindset(list list1)
{
elementmap=new map>();
fathermap=new map,vector>();
sizemap=new map,int>();
for(V value: list1)
{
vectorelement=*(new vector(value));
elementmap->insert(make_pair(value,*element));
}
}
};
int main(int argc, char** argv)
{
return 0;
}
该回答引用ChatGPT
申请堆内存时需要使用 new 关键字进行动态分配,然后再将指针赋值给相应的变量。例如,elementmap 变量应该是 map<V,vector>* 类型的指针,因此在构造函数中应该使用 new 关键字进行动态分配:
elementmap = new map<V,vector<V>>();
在 elementmap->insert(make_pair(value,*element)) 这一行代码中,make_pair 的第二个参数应该是一个 vector 类型的变量,而不是指针。应该将该行代码改为:
vector<V> element = vector<V>({value});
elementmap->insert(make_pair(value, element));
改动后的 unionfindset 类的构造函数如下:
unionfindset(list<V> list1) {
elementmap = new map<V,vector<V>>();
fathermap = new map<vector<V>,vector<V>>();
sizemap = new map<vector<V>,int>();
for (V value: list1) {
vector<V> element = vector<V>({value});
elementmap->insert(make_pair(value, element));
}
}
希望这可以帮助到你