gpt4 book ai didi

c++ - 在 C++ 中动态分配二维数组的行

转载 作者:行者123 更新时间:2023-11-30 01:27:32 24 4
gpt4 key购买 nike

在 C++ 中,我可以创建一个具有固定列数的二维数组,比如 5,如下所示:

char (*c)[5];

然后我可以按如下方式为行分配内存

c = new char[n][5];

其中 n 可以是任何变量,即使在运行时也可以赋值。我想知道是否以及如何使用此方法为每一行动态分配可变内存量。即我想使用第一个语句,但可以修改第二个语句。

最佳答案

不是指向数组的指针,而是指向指针的指针,用指针数组填充,其中每个元素依次用字符数组填充:

char ** c = new char*[n];  // array of pointers, c points to first element

for (unsigned int i = 0; i != n; ++i)
c[i] = new char[get_size_of_array(i)]; // array of chars, c[i] points to 1st element

更多的 C++ 数据结构是 std::vector<std::string> .

正如您在评论中注意到的,动态数组分配了 new[]无法调整大小,因为没有 realloc 的类似物在 C++ 中(如果你仔细想想,它对对象模型没有意义)。因此,您应该始终选择合适的容器,而不是任何手动动态生命周期管理尝试。

总结:不要使用 new .曾经。使用适当的动态容器。

关于c++ - 在 C++ 中动态分配二维数组的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8795969/

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