Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;相当于for calloc,并为数组变量声明空间_C++_C_Arrays - Fatal编程技术网

C++ c++;相当于for calloc,并为数组变量声明空间

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转换为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
。现在在循环中,它迭代
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 });
}