gpt4 book ai didi

c++ - 使用节点指针数组指向节点的子节点

转载 作者:行者123 更新时间:2023-11-28 00:04:10 26 4
gpt4 key购买 nike

我需要一个节点指向多个 child (我不知道在编译时我有多少)。
暂时只需要父节点至少指向一个子节点即可。
但它指向“0”,我错过了什么?
这是我的代码

#include <bits/stdc++.h>
using namespace std;

string tokens[10];

typedef struct node
{
char* value;
node* children[10]={NULL};
}node;

void connect(node* father,node* child)
{
// child = (node*) malloc(sizeof(node*));
if(father->children[0]!=NULL)
father->children[0]=child;
cout<<father->children[0]<<endl;
}

int main()
{

node* father_ = (node*) malloc(sizeof(node*));
node* child_ = (node*) malloc(sizeof(node*));
cout<<"before\n";
connect(father_,child_);
cout<<"after\n";

father_->children[0]->value="a";
cout<<child_->value;

}

最佳答案

对指针的痴迷是什么?这里有一个更多的 c++ 版本。

#include <string>
#include <vector>
#include <iostream>
#include <memory>

struct node
{
std::string value;
std::vector<node*> children;
};

void connect(node* father,node* child)
{
father->children.push_back(child);
}

int main()
{
auto father = std::make_unique<node>();
auto child = std::make_unique<node>();

connect( father.get(), child.get());

father->children[0]->value="a";

std::cout << child->value;
}

Live on Coliru

注意:

  • 避免使用naespace std
  • 不要使用mallocfree
  • 你不需要在 C++ 中 typedef struct
  • 使用string、vector等容器
  • 避免使用 C 风格的数组
  • 不要为所有权使用原始指针

关于c++ - 使用节点指针数组指向节点的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36675756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com