[英]Can I set for example array[n+k] = array[0]?
如果我有此代碼:
#include <iostream>
using namespace std;
int main()
{
int n, i;
cin >> n;
float array10[n];
cin >> array10[i];
}
如何創建array10[n+1]
並設置array10[0]
的值?
你不能 實際上, array10[n];
是不合法的C ++(即使n
已初始化)。 可變長度數組不是C ++的功能。
使用std::vector
:
cin >> n;
std::vector<int> vec(n);
cin >> vec[i];
這段代碼
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;
您可以通過將array10聲明為指針來實現
cin >> n;
float* array10 = new float[n];
cin >> array10[i];
//do something
delete[] array10;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.