我有一個項目,其中讀取了一個或多個維度的數組,並且對於此項目,我需要能夠快速確定給定元素的鄰居。我不知道維度會提前,而且我也不知道提前維度的大小。什麼是最好的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)? –