簡體   English   中英

我可以設置例如array [n + k] = array [0]嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM