我對使用C++初始化數組的更好方法感到好奇嗎?在C++中聲明數組的最佳方式是什麼?
會不會是:
int array[50];
或
int x;
cin>> x; //Input a number to initialise the array.
int array[x];
這兩個將是一個更好的選擇來初始化數組,爲什麼?如果沒有,那麼還有第三種方法嗎?
我對使用C++初始化數組的更好方法感到好奇嗎?在C++中聲明數組的最佳方式是什麼?
會不會是:
int array[50];
或
int x;
cin>> x; //Input a number to initialise the array.
int array[x];
這兩個將是一個更好的選擇來初始化數組,爲什麼?如果沒有,那麼還有第三種方法嗎?
如果你想有一個靜態數組(項目的常量數),使用std::array
:
std::array<int,50> a;
如果你想有一個動態數組(數組的非const的數量),使用std::vector
:
std::vector<int> a(50);
在這種情況下,你可以通過它resizing
改變向量的大小你想要的任何時間:
a.resize(100);
或只是推新項目:
a.push_back(5);
閱讀更多關於std::vector
。它可以爲你提供比你想象的更多的東西。
P.S.你的問題的第二個代碼是無效的(或者至少它不是標準的)。但是,你可以這樣做,而不是:
int x;
cin>> x; //Input a number to initialise the array.
std::vector<int> array(x);
如果我在main之前聲明命名空間stds,該怎麼辦?在這種情況下這將如何工作? –
你的意思是使用命名空間標準; ?? –
是的。我是一個新手。 :-) –
如果你知道在編譯時數組的大小,並且它不會改變,那麼最好的辦法是:
std::array<int, 50> arr;
否則使用
std::vector<int> arr;
一般來說,更好的方法是使用'std :: vector'來代替。 –
第一個是有效的C++,第二個不是。所以第一個是兩者中最好的。 – juanchopanza
既不初始化陣列。 'int array [50] = {0};'如果你確實需要一個數組,它將是初始化它的最好方法。 – molbdnilo