簡體   English   中英

C ++數據結構以查找多維數組中的相鄰值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM