在C++中修改数组的长度

3
如果我有这个浮点数数组声明:
float tables[10];

我该如何将“tables”数组的长度更改为20?

另一个关于C ++数组的问题:

我无法声明这样的数组:

int length=10;

float newTables[length]; // error C2133: 'newTables' : unknown size

提前感谢您。

4个回答

14

你无法改变数组的长度。在C++中,你应该使用std::vector来创建动态数组:

#include <vector>

int main() {
    std::vector::size_type length = 10;
    std::vector<float> tables(length); // create vector with 10 elements
    tables.resize(20); // resize to 20 elemets
    tables[15] = 12; // set element at index 15 to value 12
    float x = tables[5]; // retrieve value at index 5
}

1
如果您在编译时定义数组大小没有问题,您可以使用 #define。
#DEFINE ARRAY_SIZE 20
float tables[ARRAY_SIZE];

如果您需要在运行时指定数组的大小,请使用new关键字

float* newtables;
newtables = new float[20];

2
值得注意的是,如果您使用“new”,在完成后还必须删除分配的内存。 - TomP89
@Habba:对于这行代码:newTables = new float[20],我收到了一个错误:error C2440: '=' : 无法将类型为 'float *' 的值赋给类型为 'float []' 的变量。 - olidev
@TomP89 我可以删除已分配的内存。这不应该是一个问题。 - olidev
1
@devn:我修复了代码。看来我没有IDE就写不出代码啊 :) - Habba
是的,你说得对!声明指针只是简单地修复了代码。谢谢! - olidev
请注意,这会引发一系列其他问题 - 在C++中不应该进行手动内存管理。在这里使用std::vector几乎总是正确的选择。 - Björn Pollex

1

0

在C++中,您无法在程序运行时动态更改数组的长度。关于声明数组的方式,我建议您采用以下方法:

const int length=10;
float newTables[length];

我不确定这是否是您想要的。在这种情况下,变量“length”是一个常量,在执行过程中无法更改。

希望能对您有所帮助。


我想在声明数组后调整其长度。 - olidev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接