静态数组的动态数组的问题
Problems with a Dynamic Array of Static Arrays
我不打算更改动态数组的大小。我想创建一个静态数组(包含 shorts)的动态数组的原因是我可以在函数中返回该数组(直到我使用该函数时才定义该数组的大小)。
那么我的第一个问题是,我如何返回这样的数组?函数不允许你返回没有类型的指针,我无法找到如何使用类型array
定义指针。
这就引出了我的第二个问题,即如何正确定义静态数组的动态数组?我在网上搜索过这个,但没有一个答案太有帮助。
一种方法是声明: short (*array)[size]
但问题是我不知道在这种情况下如何初始化数组,size
必须是文字。
我可以这样做:
typedef short column[size];
column * row = NULL;
row = malloc(rowMax * sizeof(column));
row[0][0] = 10;
但同样,size
必须是文字;即使size
是文字,我也会收到一个错误,指出"void *"类型的值不能分配给"列*"类型的实体。
如果你们中的任何人有一个不使用向量的解决方案,我们将不胜感激;因为向量类大于数组类。
在 C++11 中,可以使用 <array>
中的 std::array
并执行以下操作:
constexpr std::size_t const cols = 42u; // static size
using MyStaticArray = std::array<short, cols>; // static array type
// Or in C++03 and earlier: typedef short MyStaticArray[42u];
std::size_t const rows = someValue; // dynamic size
MyStaticArray * dynamicArray = new MyStaticArray[rows];
// Or better: std::vector<MyStaticArray> dynamicArray(rows);
for (std::size_t row = 0u; row < rows; ++row)
for (std::size_t col = 0u; col < cols; ++col)
dynamicArray[row][col] = rows * cols;
PS:也给下面的雷米·勒博投票,因为他的评论有助于改进这篇文章。
为了节省时间,只需创建一个静态数组的向量
std::vector<std::array<Type, n>>
不知道为什么大小差异很重要,它只有几 Kb。
另外,如果你打算在C++应用程序中编写C代码......那么你的过得很糟糕。
相关文章:
- 数组C++问题中最大和第二大的数字
- 二维数组问题
- 数组问题:变量周围的堆栈'arr'已损坏
- 无符号字符数组问题
- 数组问题(if (zeds[i].x == zeds[i].x))
- 字符数组问题
- C++中的turbo数组问题
- 输入和输出的2D字符数组问题
- 多维数组问题
- 指针和数组指向数组问题
- 如何随机排列数组问题
- C++ 多维数组问题 - 多次打印条目
- C++ 2D 读入数组问题
- C++读入 2D 数组问题
- 指针和多维数组问题
- C++多项式类,指针数组问题
- 在数组问题(C++)中查找偶数
- 二维std::数组问题
- 向量/数组问题,不能给变量赋索引/不能使用变量作为数组大小(索引)c++
- 指针数组问题