访问节点矢量

时间:2014-04-15 02:49:35

标签: c++ pointers vector

只是一个快速的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;运营商,怎么会这样做?

提前致谢!

1 个答案:

答案 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::maptutorial here)。