C++ c++;相当于for calloc,并为数组变量声明空间
我是编程新手,正在将代码从C转换为C++C++ c++;相当于for calloc,并为数组变量声明空间,c++,c,arrays,C++,C,Arrays,我是编程新手,正在将代码从C转换为C++ 我需要为数组变量声明空间,并用C编写以下代码: r = calloc(MAXRAY+1, sizeof(double *)); for (i=0; i<=MAXRAY; i++) r[i] = calloc(3, sizeof(double)); r=calloc(MAXRAY+1,sizeof(double*); 对于(i=0;i上述C代码段分配MAXRAY+1*sizeof(double*)内存,然后将第一个内存地址分配给r。现在在
我需要为数组变量声明空间,并用C编写以下代码:
r = calloc(MAXRAY+1, sizeof(double *));
for (i=0; i<=MAXRAY; i++)
r[i] = calloc(3, sizeof(double));
r=calloc(MAXRAY+1,sizeof(double*);
对于(i=0;i上述C代码段分配MAXRAY+1
*sizeof(double*)
内存,然后将第一个内存地址分配给r
。现在在循环中,它迭代MAXRAY+1
位置,并为每个r[i]
条目进一步分配3*sizeof(double)
如果MAXRAY
可以更改,则可以简单地使用std::vector
。如果它是常量,则使用std::array
上面的C代码段分配MAXRAY+1
*sizeof(double*)
内存,然后将第一个内存地址分配给r
。现在在循环内部,它迭代MAXRAY+1
位置,并为每个r[i]
条目进一步分配3*sizeof(double)
如果MAXRAY
可以更改,则可以简单地使用std::vector
。如果它是常量,则使用std::array
代码所做的是创建数组数组。变量r是大小为MAXRAY+1的数组,其中每个元素都是指向大小为3的双精度数组的指针。代码所做的是创建数组数组。变量r是大小为MAXRAY+1的数组,其中每个元素都是指向大小为3的双精度数组的指针<如果代码< Max > 是常数,如果仍有较大的向量,你可能仍然想使用向量。如果代码> Max Leave/Cord>是常数,那么如果仍然是大的,你可能仍然想要使用向量。那么,在尝试将它转换成C++之前,有必要了解理解原始C代码的必要性。否则,你如何知道等价的构造?很显然,--------------------在理解将C代码转换成C++之前,有必要理解理解C代码的必要性。否则,你怎么知道这两种语言之间的等价结构?很显然------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <array>
int main() {
std::array<std::array<double, 3>, MAXRAY+1> r ;
for(auto i = 0u; i < r.size(); ++i)
for(auto j = 0u; j < r[i].size(); ++j)
r[i][j] = some_value ; // accessible.
}
#include <array>
#include <vector>
int main() {
std::vector<std::array<double, 3>> r ;
for(auto i = 0u; i <= MAXRAY; ++i)
r.push_back(std::array<double, 3>{ x, y, z });
}