Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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++中的随机2-D数组。我希望可以在编译时设置数组的大小,所以我在数组中包含了行数和列数的变量。但是,当我试图编译该函数时,我得到一个关于数组的存储大小不是常数的错误。这似乎和我必须添加到数组定义中的static关键字有关,这样我就可以从函数返回指针。我不确定是否有办法避免这个错误?任何建议 double * generate_random_array(int rows, int cols, double lower_, double upper_){ static double test_array[rows][cols]; for (int i = 0; i < sizeof test_array / sizeof test_array[0]; i++) { for (int j = 0; j < sizeof test_array[0] / sizeof(double); j++) { test_array[i][j] = generate_random_numbers(lower_, upper_); } } return(test_array); } double*生成随机数组(int行、int列、双下、双上){ 静态双测试_数组[行][cols]; 对于(int i=0;i_C++_Arrays_Static - Fatal编程技术网

从具有非常量数组大小的函数返回数组指针(C++; 我建立了一个函数来生成一个C++中的随机2-D数组。我希望可以在编译时设置数组的大小,所以我在数组中包含了行数和列数的变量。但是,当我试图编译该函数时,我得到一个关于数组的存储大小不是常数的错误。这似乎和我必须添加到数组定义中的static关键字有关,这样我就可以从函数返回指针。我不确定是否有办法避免这个错误?任何建议 double * generate_random_array(int rows, int cols, double lower_, double upper_){ static double test_array[rows][cols]; for (int i = 0; i < sizeof test_array / sizeof test_array[0]; i++) { for (int j = 0; j < sizeof test_array[0] / sizeof(double); j++) { test_array[i][j] = generate_random_numbers(lower_, upper_); } } return(test_array); } double*生成随机数组(int行、int列、双下、双上){ 静态双测试_数组[行][cols]; 对于(int i=0;i

从具有非常量数组大小的函数返回数组指针(C++; 我建立了一个函数来生成一个C++中的随机2-D数组。我希望可以在编译时设置数组的大小,所以我在数组中包含了行数和列数的变量。但是,当我试图编译该函数时,我得到一个关于数组的存储大小不是常数的错误。这似乎和我必须添加到数组定义中的static关键字有关,这样我就可以从函数返回指针。我不确定是否有办法避免这个错误?任何建议 double * generate_random_array(int rows, int cols, double lower_, double upper_){ static double test_array[rows][cols]; for (int i = 0; i < sizeof test_array / sizeof test_array[0]; i++) { for (int j = 0; j < sizeof test_array[0] / sizeof(double); j++) { test_array[i][j] = generate_random_numbers(lower_, upper_); } } return(test_array); } double*生成随机数组(int行、int列、双下、双上){ 静态双测试_数组[行][cols]; 对于(int i=0;i,c++,arrays,static,C++,Arrays,Static,您可以使生成随机数组成为模板,强制执行编译时已知的行和列: template <int rows, int cols> double* generate_random_array(double lower_, double upper_) { /* ... as before ... */ } 用法示例: generate_random_array<5, 10>(51.4, 66.0); auto test_array = generate_random_ar

您可以使
生成随机数组
成为
模板
,强制执行编译时已知的

template <int rows, int cols>
double* generate_random_array(double lower_, double upper_)
{
    /* ... as before ... */
}
用法示例:

generate_random_array<5, 10>(51.4, 66.0);
auto test_array = generate_random_array<5, 10>(11.0, 66.33);
自动测试数组=生成随机数组(11.0,66.33);

您可以使
生成随机数组
成为
模板
,强制执行编译时已知的

template <int rows, int cols>
double* generate_random_array(double lower_, double upper_)
{
    /* ... as before ... */
}
用法示例:

generate_random_array<5, 10>(51.4, 66.0);
auto test_array = generate_random_array<5, 10>(11.0, 66.33);
自动测试数组=生成随机数组(11.0,66.33);

在编译时是未知的,您可以使用任何参数调用
生成随机数组
。是的,我只是在一些测试函数中生成随机数组。因此,我可以更改测试用例中的行、列长度,然后编译测试用例。对不起,如果我不清楚的话。是的,我也将使用向量进行测试,但感谢您的提示。
在编译时是未知的,您可以使用任何参数调用
生成随机数组
。是的,我只是在一些测试函数中生成随机数组。因此,我可以更改测试用例中的行、列长度,然后编译测试用例。对不起,如果我不清楚的话。是的,我也要用向量进行测试,但是谢谢你的提示,太好了。这应该很好用。我不想使用模板,但我对C++仍然是新的。感谢您提供有关将来使用
std::array
std::vector
的提示。比如说Vittorio,刚才有个问题。我注意到,在这篇文章的答案中,您实际上创建并返回了一个
std::array
。我认为通过值返回C++数组是不可能的——只能返回指向第一个元素的指针。
std::array
的行为是否像
std::vector
一样,可以通过函数中的值返回这些容器?@krishnab:是的,确实如此。太好了。谢谢你的提示。我不知道,太好了。这应该很好用。我不想使用模板,但我对C++仍然是新的。感谢您提供有关将来使用
std::array
std::vector
的提示。比如说Vittorio,刚才有个问题。我注意到,在这篇文章的答案中,您实际上创建并返回了一个
std::array
。我认为通过值返回C++数组是不可能的——只能返回指向第一个元素的指针。
std::array
的行为是否像
std::vector
一样,可以通过函数中的值返回这些容器?@krishnab:是的,确实如此。太好了。谢谢你的提示。我不知道。