#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)); } }
希望这可以帮助到你
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥100 set_link_state
- ¥15 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化
- ¥15 Tableau online 嵌入ppt失败
- ¥100 支付宝网页转账系统不识别账号
- ¥15 基于单片机的靶位控制系统
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度