gpt4 book ai didi

c++ - 如何填充包含指针数组的结构数组

转载 作者:搜寻专家 更新时间:2023-10-31 00:26:54 25 4
gpt4 key购买 nike

我在 C++ 中遇到了一个小而简单的问题。我想填充包含双数组的结构数组。我怎样才能做到这一点?

typedef struct 
{
double *inputs[2];
double *target[1];
} Data;

Data data[]
{
new double[2]{10, 20}, new double[1]{30},
new double[2]{40, 50}, new double[1]{60},
new double[2]{70, 80}, new double[1]{90},
new double[2]{100, 110}, new double[1]{120}
};

main()

printf("data[0]: inputs: %f %f, targets: %f\n",
*data[0].inputs[0],
*data[0].inputs[1],
*data[0].target[0]);

这是我的想法,但是当我运行它时它会打印出这个:

data[0]: inputs: 10.000000 30.000000, targets: 40.000000

当然,在数组数据的末尾(比如第 3 或第 4 项)会导致 UNAUTHORIZED ACCESS TO MEMORY

感谢您的想法和耐心;)

最佳答案

使用现代 C++ 使您的代码既简单又安全:

#include <iostream>
#include <array>
#include <vector>

struct Data {
std::array<double,2> inputs;
std::array<double,1> target;
};

int main()
{
std::vector<Data> data = {
{ {10, 20}, {30} },
{ {40, 50}, {60} },
{ {70, 80}, {90} },
{ {100, 110}, {120} }
};
std::cout << "data[0]: inputs: " << data[0].inputs[0] << " " << data[0].inputs[1] << ", targets: " << data[0].target[0] << "\n";
}

您最初的问题是 double *inputs[2] 声明了一个指向 double 的指针的 2 元素数组,而不是指向 double 的 2 元素数组的指针

关于c++ - 如何填充包含指针数组的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50843005/

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