我正在開發一個開源的科學庫(用C編寫),我們希望支持的操作之一是讓「消費者」複製出多維數組的任意切片來自「製片人」。例如,讓我們假設有一個4x5 2D陣列(I爲格式化道歉):選擇多維數組的切片的算法
10,20,30,40
50,60,70,80
90,100,110 ,120
130,140,150,160
170,180,190,200
這些暴露雖然作爲大小20的線性陣列:10,20,30,40,50, 60,...,200
用戶代碼主要通過在偏移量,並且計數(基本上座標),它要選擇:
開始[2] = {0,2}(X起始,Y起始)
計數[ 2] = {3,2}(x count,y count)
這意味着對於x維度,從0開始,給我3(x座標範圍是[0:2]),對於y維度,從位置2開始,給我2(y座標範圍,然後是[3,4])。
這應導致
130,140,150,170,180,190
複製到用戶緩存(這將是長度爲6的)。
所以我們知道:我們知道數組的維數大小(4x5),維數(2)以及用戶想要的「座標」。
數組的尺寸可以是任意數量的維數1,2,3 ... 6? 100?因爲它在科學應用程序中非常常見,因此您的陣列具有非常大的尺寸。
這是C代碼,我真的不能想到一個算法,並將其轉化爲代碼來解決問題。我來自生物學背景,所以我對編碼的算法思維方面不太熟悉。
有沒有人有任何建議如何解決這個問題?很多幫助表示讚賞!
看到我的答案[這裏](http://stackoverflow.com/questions/30409991/use-a-dope-vector-to-access-arbitrary-slices-of-a-multidimensional-array/30409992#30409992) 。 –