【发布时间】:2019-08-21 10:07:25
【问题描述】:
我怎样才能写一个可变大小的数组...例如
int n;
n=10;
int arr[n];
现在,这不会在我的编译器 (turbo c++) 上编译。谁能帮助我并告诉我如何创建一个可变大小的数组? 我的编译器给出了无法将 int 转换为 int* 的错误(即,它无法将 x 转换为数组 [x])
【问题讨论】:
-
编写一个模板类,可以按需新建/删除/重新分配...
我怎样才能写一个可变大小的数组...例如
int n;
n=10;
int arr[n];
现在,这不会在我的编译器 (turbo c++) 上编译。谁能帮助我并告诉我如何创建一个可变大小的数组? 我的编译器给出了无法将 int 转换为 int* 的错误(即,它无法将 x 转换为数组 [x])
【问题讨论】:
是的,您不能在 C++ 中创建 VLA(尽管一些工具链通过其 C 功能将其作为扩展支持;不是您的)。
而且,由于your toolchain is too old to have vectors,你被new[] 和delete[] 困住了。
尝试鼓励您的学校从 1980 年代开始。
【讨论】:
您试图在这里声明一个大小为 10 的固定大小的数组。但是,大小需要是一个编译常量。所以你需要这样做:
const int n = 10;
int arr[n];
但是如果只知道运行时的大小,就需要动态分配数组。为此,您可以这样做:
int *arr = new int[n];
您必须记住使用 delete [] arr 释放数组。
最好使用 std::vector,它将为您处理内存分配和释放。
【讨论】:
std::vector 实现。