struct Node{
int ID, power, parent;
vector<int> connectedNodes;
Node(int ID_arg, int power_arg){
ID = ID_arg;
power = power_arg;
parent = -1;
}
};
struct Graph{
int rootID;
map<int, Node> nodes;
map<int,int> subtreeSizes;
Graph(){
rootID = 1;
nodes[1] = new Node(1,0);
}
};
我现在肯定有严重的失误,因为我不知道出了什么问题。它不喜欢我将节点放在节点映射中的方式。
答案 0 :(得分:3)
那是因为你的类型不匹配,如果你发布了编译错误,那就很明显了:
nodes[1] = new Node(1,0);
^^^^^^^^ ^^^^^^^^^^^^^
Node& Node*
你可能想做类似的事情:
nodes[1] = Node(1, 0);
由于Node
不是默认可构造的,map::operator[]
需要这个,因此在这种特定情况下无法工作。以下替代方案无论如何都适用:
nodes.insert(std::make_pair(1, Node(1, 0));
nodes.emplace(std::piecewise_construct,
std::forward_as_tuple(1),
std::forward_as_tuple(1, 0));
// etc.