如果我有这段代码:
#include <iostream>
using namespace std;
int main()
{
int n, i;
cin >> n;
float array10[n];
cin >> array10[i];
}
如何创建array10[n+1]
并设置array10[0]
的价值?
答案 0 :(得分:6)
你做不到。实际上,array10[n];
不是合法的C ++(即使n
已初始化)。可变长度数组不是C ++特性。
使用std::vector
:
cin >> n;
std::vector<int> vec(n);
cin >> vec[i];
答案 1 :(得分:2)
此代码
int n, i;
float array10[n];
无效,因为C +中的数组要求它们的大小在编译时是常量表达式。 (虽然有些编译器有自己的语言扩展允许这样做。但是这段代码不符合C ++标准)如果定义了一个数组,你可能不会改变它的大小。 如果n是一个常量表达式,那么你可以编写例如
const int n = 10;
float array[n];
float array1[n + 1]
否则你有两种方法。您应该使用标准C ++容器std :: vector
例如
int n = 10;
std::vector<float> v( n );
然后你可以调整此向量的大小
v.resize( n + 1 );
或者您应该动态分配数组。例如
int n = 10;
float *array = new float[n];
然后重新分配它;
float *tmp = new float[n + 1];
std::copy( array, array + n, tmp );
delete []array;
array = tmp;
答案 2 :(得分:1)
您可以通过将array10声明为指针
来实现cin >> n;
float* array10 = new float[n];
cin >> array10[i];
//do something
delete[] array10;