我有一个项目,其中读取了一个或多个维度的数组,并且对于此项目,我需要能够快速确定给定元素的邻居。我不知道维度会提前,而且我也不知道提前维度的大小。什么是最好的C++数据结构来存储这些数据?一位同事推荐了一组向量的向量。 。但是这似乎难以置信地笨重。用于在多维数组中查找相邻值的C++数据结构
回答
如果你知道你需要哪个元素的邻居的地址,你可以只做指针算术来找出邻居。例如,如果p是元素的位置,则p--是左边的邻居,p ++是右边的邻居。
我明白你在说什么,但我需要弄清楚首先要存储数据的内容,这样类似的东西才是可行的。 – Ingulit
一个数组可以正常工作。 – aligardezi
我刚刚意识到我忘了提及一些东西,所以我会复制我上面评论的内容:数据不在C++数组中;它在一个专有的包装类中,我不得不从中提取数据。 – Ingulit
将您的多维数组视为一维数组。让该阵列的尺寸是d1 * d2 * ....* dn
然后,对于一个1D阵列分配内存,说大小d1 * d2 * ....* dn
的A
。例如,
int *A = new int[d1 * d2 * ....* dn];
如果您需要将数据存储在[i1][i2]...[in]
个指标,然后在下面的索引存储:
A[i1 * (d2*d3*d4.. *dn) + i2 * (d3*d4*....dn) + ..... + in]
相邻元素将是:
A[(i1 + 1) * (d2*d3*d4.. *dn) + i2 * (d3*d4*....dn) + ..... + in]
A[(i1 - 1) * (d2*d3*d4.. *dn) + i2 * (d3*d4*....dn) + ..... + in]
A[i1 * (d2*d3*d4.. *dn) + (i2 + 1) * (d3*d4*....dn) + ..... + in]
A[i1 * (d2*d3*d4.. *dn) + (i2 - 1) * (d3*d4*....dn) + ..... + in]
.............................
A[i1 * (d2*d3*d4.. *dn) + i2 * (d3*d4*....dn) + ..... + (in + 1)]
A[i1 * (d2*d3*d4.. *dn) + i2 * (d3*d4*....dn) + ..... + (in - 1)]
- 1. C#中的多维数据结构#
- 2. 在C中查找二维数组中的所有相邻元素
- 3. 计数等于数组的相邻值
- 4. 查找多维结构数组中的最小值和最大值
- 5. 查找结构数组中的值
- 6. 查找结构数组中的值
- 7. 选择多维数组中的所有相邻值
- 8. 检查二维数组中相邻方块的值
- 9. 查看二维数组中的相邻值
- 10. 比多维数组上的迭代搜索更好的数据结构或算法来查找相应的值?
- 11. 在多维数组中查找具有'SELECTED'值的数组
- 12. 在数组的多维数组中查找值
- 13. 查找节点邻居二维数组
- 14. C编程,结构和多维数组
- 15. 使用convolve2d查找二维数组中的邻居数量
- 16. 多维数组结构
- 17. 用于映射相邻房间的Java内置数据结构
- 18. 在二维数组中找到唯一的相邻索引
- 19. 检查多维数组中相同数组值的重复项?
- 20. RPGLE数据结构数组查找
- 21. 什么数据结构用于多维网格? (C++)
- 22. 在MATLAB中查找N维数组中的所有邻居
- 23. C中结构的三维数组
- 24. 二维数组中的结构 - C -
- 25. 多维数组的数据结构,其中维数在运行时确定
- 26. 多维数据结构
- 27. 多维数据结构?
- 28. 内存中的多维数组结构
- 29. 查找重复值多维数组
- 30. PHP在多维二维数组中查找值
你这是什么意思是邻居? –
如果有一个维度: 索引x有邻居x-1和x + 1 ;;; (x,y)具有相邻(x-1,y),(x + 1,y),(x,y-1),(x,y + 1) 等 – Ingulit
你对程序的输入是什么?我猜数组的维度和数组元素? (如2 * 3和1,2,3,4,5,6)? –