c++ - C++11 中的几个数组

标签 c++ c++11

在 C++11 中,我们有一个新的 std::array,类似于 boost::array。示例:

std::array<int, 5> fiveInts;

如果我想以两种方式使用这个新数组:

  1. 在堆栈上分配一个数组。
  2. 在堆上分配一个数组。

如何在句法上实现这一点? 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/

相关文章:

c++ - 试图从 std::function 获取普通函数指针

c++ - 在 C++11 中定义只移动对象是否有意义?

c++ - 概念与接口(interface)有何不同?

C++:我应该捕获所有异常还是让程序崩溃?

c++ - 为什么我不能像使用 std::string::size_type 那样使用 QList::size_type? (模板参数错误)

c++ - 在 C/C++ 中列出项目的最有效方法

c++ - 这种字符串格式在 C++ 中意味着什么?

C++ 回调函数指针

c++ - 条件表达式中的右值引用

c++ - Eclipse CDT 将 static_assert(cond) 突出显示为语法错误