在没有全局变量的C++函数中创建数组

kin*_*986 6 c++ arrays

所以我想在函数中创建一个数组,其大小由作为参数的数字设置.这是一个例子:

void temp_arr ( const int array_size ) {
     int temp_arr[array_size]; //ERROR array_size needs to be a constant value
    //Then do something with the temp arr
}
Run Code Online (Sandbox Code Playgroud)

即使参数是const int,它也不起作用.我想不使用全局const而不使用向量.我很好奇,因为我正在学习C++.我希望它能够使每次调用函数时数组大小不同.是否有解决方案或我是否在调用函数之前创建一个const变量和数组?

use*_*177 7

使用模板功能:

template<std::size_t array_size>
void temp_arr()
{
    int temp_arr[ array_size ];
    // ...work with temp_arr...
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用以下语法调用该函数:

temp_arr<32>(); // function will work with a 32 int statically allocated array
Run Code Online (Sandbox Code Playgroud)

注意

每个具有不同值的调用都array_size将实例化一个新函数.

  • 如果大小来自变量怎么办? (2认同)