访问节点矢量

Accessing Vector of Nodes

本文关键字:节点 访问      更新时间:2023-10-16

只是一个快速的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);

但它抛出了一个错误,说它无法识别"*"运算符。仅尝试

tree->left = nodeVec.at(0)

它说我无法将节点转换为节点*。

但如果我使用

tree->left = &nodeVec.at(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]

更一般地说,我建议您对指针进行一些背景阅读(可能在这里),或者更好的是,考虑标准容器是否能满足您的需求,例如std::map(这里是教程)。