是否可以在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