c++ - 在 C++ 中创建固定大小的 int 数组的动态大小数组

标签 c++ arrays memory fixed

出于某种原因,这给我带来了比我想象的更多的麻烦......

int *myArray[3];

myArray = new int[mySize];

不工作...

我以前以类似的方式使用过 typedef,它工作得很好,但这次我不想创建 typedef

最佳答案

人们可能会想这样做:

::std::vector<int[3]> myArray;

因为 vector 非常适合动态大小的数组。不幸的是,虽然该声明有效,但生成的 vector 无法使用。

如果你有 ::std::array(一个 C++11 特性),这将同样有效,并且它会实际工作:

::std::vector< ::std::array<int, 3> > myArray;

如果你能做到这一点,我强烈推荐它。 vector 比您必须使用 new 分配给自己的数组处理起来更好更安全。

否则,试试这个:

typedef int inner_array_t[3];
inner_array_t *myArray = new inner_array_t[mySize];

由于某些奇怪的原因你不想使用 typedef,你可以像这样打开它:

int (*myArray)[3] = new int[mySize][3];

关于c++ - 在 C++ 中创建固定大小的 int 数组的动态大小数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8529359/

相关文章:

c++ - 漫谈 std::allocator

c - 在 C 中通过引用传递 char 数组

php - jQuery 自动完成从 mysql 数据库获取提要

c# - 缩短整数数组

c++ - 为什么 `abs()` 的实现方式不同?

c++ - 我正在尝试用 Qt 翻译我的应用程序,但出了点问题,没有结果

c++ - 如何在 C++ 中计算对象的哈希/校验和/指纹?

arrays - Go:多维数组的范围和长度?

ios - GLKit 内存泄漏 copywithZone

c++ - 使用 C++ 查找 RAM 数量