You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何在结构体内部分配结构体数组?

结构体内部结构体数组分配问题的解决

指针版本的修正

你原来写的t_nd* net.nds = new t_nd[10];犯了基础语法错误——赋值时不能重复声明变量类型,直接给net.nds赋值即可,不需要前面的t_nd*。

修正后的完整代码:

struct t_nd {
  double stuff;
};

struct t_nwork {
  struct t_nd *nds;
};

struct t_nwork net;

// 正确分配数组
net.nds = new t_nd[10];

⚠️ 注意:用new分配的内存需要手动释放,不需要时执行delete[] net.nds;,避免内存泄漏。

vector版本的修正

你写的vector<t_node> net.nodes(10);有两处错误:

  1. 结构体成员名是nds而非nodes,且结构体类型写错了(应为t_nd不是t_node)
  2. 不能直接这样给结构体的vector成员赋值,需先将结构体成员定义为vector<t_nd>类型,再进行初始化。

正确的vector实现代码:

#include <vector> // 必须包含vector头文件

struct t_nd {
  double stuff;
};

struct t_nwork {
  std::vector<t_nd> nds; // 将指针替换为vector类型
};

struct t_nwork net;

// 初始化vector为10个元素
net.nds.resize(10);

// 或者定义net时直接初始化,更简洁:
// t_nwork net{std::vector<t_nd>(10)};

用vector的优势是无需手动管理内存,它会自动处理内存的分配与释放,比裸指针更安全。

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:25:28