我是c ++的初学者。 我想在运行时创建不同大小的多个数组。 我尝试了以下编译和运行的代码。但在与谷歌搜索的其他答案进行比较后似乎并不合适。大多数结果表明它应该使用new和delete或vector或其他一些库实现来完成。任何人都可以帮助指出它有什么问题吗?
void Basics::TestArray(int length){
int arr[length];
for(int i=0;i<length;i++){
arr[i] = i;
}
}
答案 0 :(得分:2)
可变长度数组(VLA)是C99的特色。标准C ++不支持它。一些C ++编译器提供对VLA的支持作为编译器扩展,但我会远离它。
在C ++中实现相同目标的最佳方法 - 使用std :: vector
std::vector<int> arr(length);
for(auto i=0;i<arr.size();i++){
arr[i] = i;
}
答案 1 :(得分:0)
void Basics::TestArray(int length){
int *arr =new int[length];
for(int i = 0; i < length; i++) {
arr[i] = i;
}
//do something with your array before it gets deleted
delete []arr;
}
我很惊讶您编译的代码没有错误,因为'length'需要在该代码中保持不变。
上面是一种可以使用指向数组的指针来完成的方法,但请注意,如果使用'new'关键字,则必须删除数组,否则会泄漏内存。 (因为数组是在函数中创建的,所以必须在退出函数之前将其删除,因为它将超出范围,并且无法再次访问它。)
如果你真的想以这种方式使用动态数组,我认为最好创建一个包装类,当它超出范围时可以在析构函数中自动删除它。 但是,建议使用上面建议的std :: vector类。