只是一个快速的C ++问题。我一直在尝试将向量中的节点保存到节点的右子节点。
例如,
我有一个名为node的结构,它有一个指向左子项和右子项的指针。 所以:
struct node{
node *left;
node *right;
};
我的节点向量,
vector<node> nodeVec;
也包含节点。
目标是从我的向量中取出一个节点并保存为新节点的左右子节点。
所以:
node *tree = new node();
tree->left = *nodeVec.at(0);
tree->right = *nodeVec.at(1);
但它引发了一个错误,表示它没有识别出&#39; *&#39;运营商。试着
tree->left = nodeVec.at(0)
它表示我无法将节点转换为节点*。
但如果我使用,
tree->left = &nodeVec.at(0)
它成功地保存了我左边孩子的地址。 我看了几个网站和答案,我认为这里找到了一个,
Dereference vector pointer to access element,
可能是最相关的。我试了一下,扔了很多错误,我不太明白。
简而言之,从我读过的内容来看,我需要取消引用向量中的节点。但如果它不接受&#39; *&#39;运营商,怎么会这样做?
提前致谢!
答案 0 :(得分:0)
您可以像这样访问向量中的节点:
node* p_left = nodeDev.at(0).left;
node copy_constructed_node(*(nodeDev.at(0).right));
您还可以使用tree
:
node* p_left = tree->left; // your code set this to &nodeVec[0]
更一般地说,我建议您对指针进行一些背景阅读(可能here),或者 - 更好 - 考虑标准容器是否满足您的需求 - 例如std::map
(tutorial here)。