亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將2D陣列映射到1D陣列上

將2D陣列映射到1D陣列上

海綿寶寶撒 2019-08-06 15:50:44
將2D陣列映射到1D陣列上我想用一維數組表示一個二維數組。函數將傳遞兩個指標(x,y)和要存儲的值。這兩個標記代表一維陣列的單個元素,并相應地設置它。我知道1D數組需要有arrayWidth×arrayHeight的大小,但我不知道如何設置每個元素。例如,我如何區分(2,4,3)和(4,2,3)?我嘗試將數組設置為x * y,但是2 * 4和4 * 2將導致數組中的相同位置,我需要它們不同。
查看完整描述

3 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

將二維數組索引重新計算為一維數組索引的典型公式為

index = indexX * arrayWidth + indexY;

或者你可以使用

index = indexY * arrayHeight + indexX;

(假設arrayWidth沿X軸測量,arrayHeight沿Y軸測量)

當然,人們可以提出許多不同的公式來提供替代的唯一映射,但通常沒有必要。

在C / C ++語言中,內置的多維數組存儲在內存中,以便最后一個索引的變化速度最快,這意味著對于聲明為

int xy[10][10];

元素xy[5][3]緊跟xy[5][4]在內存中。您可能也想遵循該約定,根據您認為哪個索引(X或Y)是兩者中的“最后”,選擇上述兩個公式之一。


查看完整回答
反對 回復 2019-08-06
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

示例:我們想要表示SIZE_X和SIZE_Y大小的2D數組。這意味著我們將擁有MAXY連續的MAXX大小行。因此設定功能是

void set_array( int x, int y, int val ) { array[ x * SIZE_Y + y ] = val; }

得到的將是:

int get_array( int x, int y ) { return array[ x * SIZE_Y + y ]; }


查看完整回答
反對 回復 2019-08-06
  • 3 回答
  • 0 關注
  • 828 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號