2016-02-05 124 views
2

我對使用C++初始化數組的更好方法感到好奇嗎?在C++中聲明數組的最佳方式是什麼?

會不會是:

int array[50]; 

int x; 

cin>> x; //Input a number to initialise the array. 

int array[x]; 

這兩個將是一個更好的選擇來初始化數組,爲什麼?如果沒有,那麼還有第三種方法嗎?

+7

一般來說,更好的方法是使用'std :: vector'來代替。 –

+5

第一個是有效的C++,第二個不是。所以第一個是兩者中最好的。 – juanchopanza

+0

既不初始化陣列。 'int array [50] = {0};'如果你確實需要一個數組,它將是初始化它的最好方法。 – molbdnilo

回答

9

如果你想有一個靜態數組(項目的常量數),使用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); 
+0

如果我在main之前聲明命名空間stds,該怎麼辦?在這種情況下這將如何工作? –

+0

你的意思是使用命名空間標準; ?? –

+0

是的。我是一個新手。 :-) –

2

如果你知道在編譯時數組的大小,並且它不會改變,那麼最好的辦法是:

std::array<int, 50> arr; 

否則使用

std::vector<int> arr; 
相關問題