我剛開始學習C++。當我開始非常困惑時,我試圖掌握多維數組和向量的語法。我得到如何初始化多維數組。看起來很簡單:行後跟列。然而,載體更具挑戰性。我是否必須以相同的方式對它們進行初始化,還是要創建一個向量向量。有人請幫忙。C++中的多維向量
-1
A
回答
2
聲明多維向量:
vector<vector<int> > test(4,vector<int>(20));
這就產生了一個2D矢量4×20。當然,因爲它們是根據需要可以被改變載體。索引與數組test[3][19]
相同。
1
如果您能夠使用C++ 11,則可以以類似的方式初始化多維向量和向量向量。
int a1[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
std::vector<std::vector<int>> a2 = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
但是,在訪問元素時必須理解不同之處,而不會遇到未定義的行爲。
對於多維數組,需要連續分配數組元素的內存。對於矢量矢量,元素的內存很可能不相交。
內存爲a1
:
a1[0][0] a1[1][0] a1[2][0]
| | |
v v v
+---+---+---+---+---+---+---+---+---+
| | | | | | | | | |
+---+---+---+---+---+---+---+---+---+
存儲器用於a2
(最有可能的):
a2[0][0]
|
v
+---+---+---+
| | | |
+---+---+---+
a2[1][0]
|
v
+---+---+---+
| | | |
+---+---+---+
a2[2][0]
|
v
+---+---+---+
| | | |
+---+---+---+
另外,也能夠矢量所定義的載體,其中列數是不相同爲每一行。
std::vector<std::vector<int>> a2 = { {1, 2, 3}, {4, 5}, {6, 7, 8, 9} };
在多維數組中,每列的列數保證相同。
鑑於上述多維數組a1
,a1[1][2]
將是一個有效元素,a1[2][3]
將是一個無效元素。在向量矢量的情況下,使用上述行,a2[1][2]
不是有效元素,a2[2][3]
是有效元素。
相關問題
- 1. C++多維向量
- 2. 多維的std ::向量(C++)
- 3. C++複製多維向量
- 4. 多維向量?
- 5. 多維向量
- 6. Scheme中的多維向量?
- 7. cpp多維向量
- 8. KNN多維向量
- 9. 多維動態內存向量C++
- 10. 向量的多維數組
- 11. 在C++中聲明具有可變數量維度的多維向量
- 12. 將值插入到C++中的多維向量中
- 13. numpy中多維數組的向量和
- 14. Initialzing二維向量在C++
- 15. 多維向量指針
- 16. 使用多維向量
- 17. 多維向量字符串
- 18. 打印多維向量
- 19. 多維向量初始化
- 20. 動態多維向量
- 21. 將多維向量更改爲二維向量matlab
- 22. 在C++類中創建二維向量
- 23. 從文件中讀取多維向量
- 24. 從多維向量中刪除元素
- 25. 在多維向量中添加一個元素C++
- 26. Rust中的二維向量
- 27. 類類型的多維向量
- 28. 對象的輸出多維向量
- 29. 排序無空值的多維向量
- 30. 如何重新調整多維向量的大小? C++
矢量矢量(矢量...)。 – 2016-12-26 00:14:22