C ++零初始化具有可变数组长度的模板数组
C++ zero init an array of templates with variable array length
有没有办法将具有可变大小的任何类型的数组初始化为零?所以我想要的是应用这样的东西:
int results[5] = {};
到这样的模板:
T results[i] = {};
当我尝试这个时,我的编译器会这样说:'results' declared as array of functions of type 'T ()'
。
当我使用任何固定类型名称时,我会收到此错误:Variable-sized object may not be initialized
另外i
是调用这个函数时传入的变量
可变长度数组在 C++ 中是非标准的,您的编译器支持它们作为扩展。您的编译器还告诉您扩展的局限性:可变长度数组可能没有初始化程序。作为解决方法,您可以这样做:
int results[i];
std::fill(results, results + i, 0);
当然,更好的方法是使用 std::vector
这样您就不会依赖任何非标准扩展。
有没有办法将具有可变大小的任何类型的数组初始化为零?所以我想要的是应用这样的东西:
int results[5] = {};
到这样的模板:
T results[i] = {};
当我尝试这个时,我的编译器会这样说:'results' declared as array of functions of type 'T ()'
。
当我使用任何固定类型名称时,我会收到此错误:Variable-sized object may not be initialized
另外i
是调用这个函数时传入的变量
可变长度数组在 C++ 中是非标准的,您的编译器支持它们作为扩展。您的编译器还告诉您扩展的局限性:可变长度数组可能没有初始化程序。作为解决方法,您可以这样做:
int results[i];
std::fill(results, results + i, 0);
当然,更好的方法是使用 std::vector
这样您就不会依赖任何非标准扩展。