當我需要在C++中存儲多個相同類型的值時,我可以使用一個向量或數組。到目前爲止,我主要只使用向量,但我聽說數組處理速度更快(讀取和寫入值)。如果這是真的,我想知道如何用標準輸入讀取的大小來創建一個數組。我目前使用的是這樣的:C++從標準輸入初始化一個大小的數組
int N;
cin >> N;
vector<int> myVector(N);
我曾嘗試:
int N;
cin >> N;
array<int, N> myArray;
,但是這給了我一個錯誤,因爲:
錯誤:的「N」的值不是一個常量表達式可用
我也曾嘗試:
int N;
cin >> N;
int myArray[N];
這將編譯,但是當我試着問這個ARRA的大小Y(myArray.size()
)遍歷它與一個for循環然後我得到一個錯誤:
錯誤:會員「尺寸」在「myArray的」,請求其是非類型的「INT [N]」
所以我應該用數組替換向量來使我的代碼更快,如果是的話我應該怎麼做呢?
***我應該用數組替換向量,使我的代碼更快***不,你需要一個動態數組,所以使用一個向量。 – drescherjm
'std :: array'的速度優勢(及其基於堆棧的對象的大小限制)來自這樣一個事實,即std :: array的大小在編譯時是已知的,因此它可以避免分配和更重要的是間接的。可能有一個類似std :: array的數據結構的地方,它具有已知的大小上限,但動態大小高達此上限。但是,標準C++庫中沒有這樣的數據結構。 –
'int myArray [N];'是一個VLA。這不是合法的C++,而是一個編譯器擴展。無論如何,我懷疑它比矢量更快,它使你的代碼只能在支持這種非標準擴展的編譯器上工作。 – drescherjm