【发布时间】:2012-06-18 23:43:37
【问题描述】:
在 C++ 中,是否可以在程序运行时创建一个新数组?具体来说,假设我在一个类中有一个数据成员,变量的名称是数组,它是一个大小为 10 的数组。假设在运行时我想要一个更大的数组,我可以在不使用指针的情况下做到这一点吗?可以有如下方法吗?
int[] expandCapacity(int currentCapacity) {
int [] arr = new int[currentCapacity*2];
currentCapacity*=2;
return arr;
}
为什么我不能用这个方法来扩展当前数组的容量呢:
currentCapacity = 10;
array = expandCapacity (currentCapacity);
如果可行,则无需使用指针。我觉得我在这里遗漏了一些重要的东西。如果您能指出我遗漏的内容,我将不胜感激。
【问题讨论】:
-
即使像
std::vector这样的容器在内部也使用指针。没有办法绕过它们。 -
这只是一个交际练习还是你想要解决的问题?
-
此外,在不同于“在编译时处理未知大小的内存块”的情况下也需要指针。例如,考虑子类型的多态性。返回 T 的子类实例的函数必须返回 T*。