C++ 如何操作包含二维数组的结构数组
使用C++,我正在实现一个结构为HiddenLayer的数组,定义为C++ 如何操作包含二维数组的结构数组,c++,arrays,c++11,C++,Arrays,C++11,使用C++,我正在实现一个结构为HiddenLayer的数组,定义为 struct HiddenLayer { int prev; ///Number of Rows in node int next; ///Number of Columns in node float **node; ///2D array pointer }; 结构数组在主例程中初始化,节点是指向结构内部2D数组的指针。我正在将此数
struct HiddenLayer
{
int prev; ///Number of Rows in node
int next; ///Number of Columns in node
float **node; ///2D array pointer
};
结构数组在主例程中初始化,节点是指向结构内部2D数组的指针。我正在将此数组初始化为
int main()
{
struct HiddenLayer HLayer[1];
HLayer[0].prev = 1; //Num of rows
HLayer[0].next = 3; //num of col
HLayer[0].node = (float *) malloc((HLayer[0].prev) * sizeof(float *));
for(int i=0;i<HLayer[0].prev;i++)
HLayer[0].node[i] = malloc(HLayer[0].next * sizeof(float));
return 0;
}
我跟着给出的答案走了
我做错了什么?错误消息是不言自明的:您混淆了类型
HLayer[0].node = (float *) malloc((HLayer[0].prev) * sizeof(float *));
应该是
HLayer[0].node = (float **) malloc((HLayer[0].prev) * sizeof(float *));
HLayer[0].node[i] = (float *) malloc(HLayer[0].next * sizeof(float));
及
应该是
HLayer[0].node = (float **) malloc((HLayer[0].prev) * sizeof(float *));
HLayer[0].node[i] = (float *) malloc(HLayer[0].next * sizeof(float));
但是,为什么你想在C++中使用<代码> MalCube()/代码>和家庭?错误信息是不言自明的:你把类型混淆了。
HLayer[0].node = (float *) malloc((HLayer[0].prev) * sizeof(float *));
应该是
HLayer[0].node = (float **) malloc((HLayer[0].prev) * sizeof(float *));
HLayer[0].node[i] = (float *) malloc(HLayer[0].next * sizeof(float));
及
应该是
HLayer[0].node = (float **) malloc((HLayer[0].prev) * sizeof(float *));
HLayer[0].node[i] = (float *) malloc(HLayer[0].next * sizeof(float));
<>但是,为什么你想在C++中使用<代码> MalCube()/Cub和Stand?< /P>,所以这不是,对吗?<代码>(浮点*)Malc C <代码>应该至少是<代码>(浮点**)Malc < /Cube > 1。您正试图将
float*
影响为float**
。2.您没有转换到正确的类型…而您的另一个malloc
应该转换到(float*)
-simples!很抱歉被malloc的使用抛弃了。所以这不是,对吧?(float*)malloc
至少应该是(float**)malloc
1。您正试图将float*
影响为float**
。2.您没有转换到正确的类型…而您的另一个malloc
应该转换到(float*)
-simples!很抱歉被malloc的使用抛弃了。对C++来说这是真的吗?为什么不把new
改为malloc
@TruthSeeker(1)第(2)行呢?这和我答案中的最后一行是一样的。@SouravGhosh,谢谢!我必须避免像新的和STL容器那样的C++特性。但是我应该如何添加和操作数据到这个数组?@SouravGhosh@PeDro不使用<代码>新< /COD>或标准库,不能在C++中可靠地使用动态内存分配。code>mallocwithoutnew
在技术上总是会导致未定义的行为,如果所使用的类型不是琐碎的,则可以肯定。对使用<代码>新< /COD>有限制,但允许new
改为malloc
@TruthSeeker(1)第(2)行呢?这和我答案中的最后一行是一样的。@SouravGhosh,谢谢!我必须避免像新的和STL容器那样的C++特性。但是我应该如何添加和操作数据到这个数组?@SouravGhosh@PeDro不使用<代码>新< /COD>或标准库,不能在C++中可靠地使用动态内存分配。code>mallocwithoutnew
在技术上总是会导致未定义的行为,如果所使用的类型不是琐碎的,则可以肯定。对使用<代码>新< /COD>有限制,但允许