gpt4 book ai didi

c++ - 静态数组的动态数组的问题

转载 作者:行者123 更新时间:2023-11-30 02:33:07 25 4
gpt4 key购买 nike

我不打算更改动态数组的大小。我想创建静态数组(包含短裤)的动态数组的原因是我可以在函数中返回该数组(在我进入该函数之前不定义该数组的大小)。

那么我的第一个问题是,如何返回这样一个数组?函数不允许您返回没有类型的指针,而且我无法找到如何定义类型为 array 的指针。

这引出了我的第二个问题,即如何正确定义静态数组的动态数组?我在网上搜索过这个,但没有一个答案对我有太大帮助。

一种方法是声明:short (*array)[size] 但问题是我不知道在那种情况下如何初始化数组,并且 size 必须是文字。

我可以这样做:

typedef short column[size];
column * row = NULL;
row = malloc(rowMax * sizeof(column));
row[0][0] = 10;

但同样,size 必须是文字;即使 size 是文字,我也会收到一条错误消息,指出“void *”类型的值不能分配给“column *”类型的实体。

如果你们有不使用 vector 的解决方案,我们将不胜感激;因为 vector 类大于数组类。

最佳答案

在 C++11 中可以使用 std::array来自 <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:同时在下方为 Remy Lebeau 投票,因为他的评论有助于改进这篇文章。

关于c++ - 静态数组的动态数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35785390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com