[英]C++ Data Structure to Find Neighbouring Values in Multidimensional Array
我有一個項目,在其中讀取具有1個或多個維度的數組,為此項目,我需要能夠快速確定給定元素的鄰居。 我不知道提前的尺寸,我也不知道提前的尺寸。 存儲該數據的最佳C ++數據結構是什么? 一位同事推薦了的向量的向量。 。 。,但這似乎難以置信。
如果您知道需要相鄰元素的元素的地址,您是否可以執行指針算術來找出相鄰元素。 例如,如果p是元素的位置,則p--是左鄰居,而p ++是右鄰居。
將多維數組視為一維數組。 令數組的維數為d1 * d2 * ....* dn
然后為一維數組分配內存,例如大小為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)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.