在 C++11 中,我们有一个新的 std::array
,类似于 boost::array
。示例:
std::array<int, 5> fiveInts;
如果我想以两种方式使用这个新数组:
- 在堆栈上分配一个数组。
- 在堆上分配一个数组。
如何在句法上实现这一点? 5
可以是一个变量还是只是一个 const
?
最佳答案
模板参数在编译时必须始终是已知的。 std::array
的大小不能是变量。
管理堆上连续值缓冲区的最佳方法是通过 std::vector
,它为您提供了缓冲区大小的运行时大小。
std::array<int, 5> fiveInts;
在堆栈上创建一个包含 5 个元素的数组(在自动存储中)。 std::vector<int> fiveInts(5);
创建一个 5 int
的托管缓冲区s 在堆上(在免费存储中)。
您可以创建完整的 std::array
通过调用 new
在堆上,但我建议不要这样做。 std::array
它的主要优点是它允许基于堆栈(或基于类的内部)存储。
关于c++ - C++11 中的几个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13363310/