是否可以在C++中向現有數組添加一個或多個維度?例如,我有2維數組,在某處我需要添加一個或多個維度到這個數組。將維添加到數組
Q
將維添加到數組
0
A
回答
0
你不能這樣做隱含。你必須創建一個新的數組n維和複製所需的值
int new_array[10][10][10];
// copy using a loop or a std::-function
2
不管如何,作爲poitroae已經提到的,您將需要某種形式的副本。然而,如果你用一維數組模擬二維和三維陣列,這個副本會加速很多,這就是爲什麼我決定首先發佈一個答案。
爲了模擬具有一維數組的二維和三維數組,您可以使用簡單的數學方法來索引數組。這降低了內存分割速度,因爲有更多的chache命中。要添加維度,您只需創建適當大小的另一個一維數組,並複製當前數據。
我會提供一個例子,當我可以找到代碼,我已經做到了這一點。
編輯:顯然以上不是他想要的。我會在下面再試一次
你有:一維數組模擬二維數組。
看起來好像你不希望實際上將整個維度添加到數組中,只是矩陣。 (基本上調整從一種尺寸到另一種同時保持數據)
所以,在這裏是一個例子:
你有一個3×3(U = 3,V = 3)下面
邏輯表示矩陣:
|3 5 6|
|7 2 5|
|1 0 2|
物理表示(INT [3 * 3] 「基質」)
[3, 5, 6, 7, 2, 5, 1, 0, 2]
- 轉換到一個4x4(X = 4,Y = 4) -
int* newMatrix = new int[X*Y];
for(int i = 0; i < Y; i++)
{
for(int k = 0; k < X; k++)
{
//copy from old if it falls in bounds
if(k < U && i < V)
{
newMatrix[i*X + k] = matrix[i*U + k];
}
//Otherwise, zero out
else
{
newMatrix[i*X + k] = 0;
}
}
}
delete [] matrix;
這應該給你一個4x4 newMatrix。
按道理:
|3 5 6 0|
|7 2 5 0|
|1 0 2 0|
|0 0 0 0|
身體:
[3, 5, 6, 0, 7, 2, 5, 0, 1, 0, 2, 0, 0, 0, 0, 0,]
如果你使用的變量像我一樣,你應該能夠只要編寫一個函數,將做到這 任何矩陣爲你給它準確的參數(矩陣的X和Y尺寸)
要走另一條路 - 縮小尺寸 - 它應該是一個類似的設置(雙循環)你在哪裏檢查你是否在限制範圍內,只有在你的情況下才能複製。如果不是,你根本不要複製任何東西。我會讓你寫那個。
我希望這是更多你正在尋找。我在錯誤的背景下跳上了維度。決定在矩陣方面更多地考慮答案。
相關問題
- 1. 將數據添加到3維數組
- 2. 將數組添加到同一維數
- 3. 如何將一維數組添加到二維數組?
- 4. 將對象添加到二維數組
- 5. 將PHP多維數組添加到JSON
- 6. 將元素添加到多維數組
- 7. 將列添加到二維數組
- 8. 將PHP添加到多維數組中
- 9. 將數組追加到多維數組
- 10. 將維添加到多維數組中JS
- 11. 將數組值(行)添加到二維數組C++
- 12. 使用PHP將數組添加到多維數組中
- 13. 如何將數組添加到多維數組?
- 14. 數據添加到多維PHP數組
- 15. 添加多維數組到mysql我有多維數組
- 16. PHP - 添加到多維數組的值
- 17. 新陣列添加到多維數組
- 18. 添加到一個多維數組PHP
- 19. 添加到多維數組中的PHP
- 20. 添加到多維數組在PHP
- 21. 添加到多維數組PHP
- 22. PHP添加到多維數組
- 23. 紅寶石 - 添加到多維數組
- 24. 將多維數組一起追加到一維數組中?
- 25. 如何將數據添加到JavaScript中的二維數組
- 26. 使用javascript將數據添加到多維數組中
- 27. 在while循環中將數據添加到多維數組php
- 28. 如何將數據添加到二維數組?
- 29. 將EXCEL數據添加到多維ArrayList
- 30. 將數組添加到JTextField
實際上我不知道有多少維度提前添加我的矩陣。我會等你的例子。 – 2013-03-13 17:50:04
根據給你什麼樣的數據,你可以計算出尺寸並創建一維數組,只需這樣做: int * matrix = new int [X * Y];其中X和Y是XxY矩陣的尺寸 – 2013-03-13 17:53:20
從那裏您可以使用寬度和偏移量將數組索引到數組中。我會盡快提供上面的例子。 – 2013-03-13 17:55:46