Skip to main content
 首页 » 编程设计

C++ 零初始化具有可变数组长度的模板数组

2025年12月25日51youxin

有没有办法将任何类型的可变大小的数组初始化为零?所以我想要的是应用这样的东西:

int results[5] = {}; 

像这样的模板:

T results[i] = {}; 

当我尝试这样做时,我的编译器会这样说:“结果”声明为“T ()”类型的函数数组。 当我使用任何固定类型名时,我收到此错误:可变大小的对象可能未初始化

此外,i 是调用此函数时传入的变量。

请您参考如下方法:

可变长度数组在 C++ 中是非标准的,并且您的编译器支持它们作为扩展。您的编译器还告诉您扩展的限制:可变长度数组可能没有初始值设定项。作为解决方法,您可以这样做:

int results[i]; 
std::fill(results, results + i, 0); 

当然,更好的方法是使用 std::vector,这样您就不会依赖任何非标准扩展。