1

是否有动态变体在可用时(GCC)在内部boost::array使用 C99 的可变长度数组(VLA),否则使用基于堆的?

4

1 回答 1

2

boost::array基于模板参数工作。模板参数不能是运行时值。所以不行。

此外,VLA 仅适用于在堆栈 ( ObjType val[someInteger];) 上声明的数组。它们不适用于对象 (中声明的数组struct ObjType { int val[someInteger]; };。因此,即使模板参数可以是运行时值,它也无济于事。

如果您负担不起堆分配,只需将 astd::vector与从预分配内存的“堆栈”中提取的分配器一起使用。

于 2012-04-09T16:56:01.510 回答