#include <iostream>
#include <vector>
#include <map>
#include <list>
using namespace std;
class V
{
public:
int value;
V* head;
V()
{
this->value=0;
head=this;
}
};
class unionfindset
{
public:
map<V,vector<V>>*elementmap;
map<vector<V>,vector<V>>*fathermap;
map<vector<V>,int>*sizemap;
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=*(new vector<V>(value));
elementmap->insert(make_pair(value,*element));
}
}
};
int main(int argc, char** argv)
{
return 0;
}
申请堆内存是赋值不行吗,还有往map里存储时会出错,求告知
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CodeBytes 2023-03-01 11:53关注
该回答引用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)); } }
希望这可以帮助到你
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 三种调度算法报错 有实例
- ¥15 关于#python#的问题,请各位专家解答!
- ¥200 询问:python实现大地主题正反算的程序设计,有偿
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存
- ¥15 CST保存项目时失败
- ¥20 java在应用程序里获取不到扬声器设备