多維陣列的順序表示

2021-06-22 01:34:57 字數 2071 閱讀 5961

多維陣列節點,有四個元素

struct array 

;譬如乙個2*3的二維陣列,dim就等於二,行優先儲存,bounds[0]就為2,bounds[1]就為3。

對於constants,constant[i]就是第i+1層的陣列中每一元素(陣列)的大小。

對於行主序的2*3的二維陣列來說,constant[1]就是每一行的乙個元素(如:((a,b,c),(d,e,f))中a,f)佔據的記憶體長度

constant[0]就是當前行每一列(如:(a,b),其中a=(a,b,c),b=(d,e,f)),a、b佔據的記憶體長度。

/*

多維陣列的順序表示

除錯環境:vs2010,gcc

*/#include #include #include #include #define ok 1

#define error 0

#define max_array_dim 8

typedef struct

array;

int init_array(array *a, int dim, ...)

a->dim = dim;

a->bounds = (int *)malloc(dim * sizeof(int));

if(!(a->bounds))

va_start(ap, dim);

for(i = 0; i < dim; i++)

elem_num *= a->bounds[i];

} va_end(ap);

a->base = (int *)malloc(elem_num * sizeof(int));

if(! (a->base))

a->constants = (int *)malloc(dim * sizeof(int));

if(!(a->constants))

a->constants[dim - 1] = 1;

for(i=dim-2; i>=0; i--)

return ok;

}int destory_array(array *a)

else

return error;

if(a->bounds)

else

return error;

if(a->constants)

else

return error;

return ok;

}/*尋找待搜尋的arr[i][j][k]相對於基位址的偏移量*/

int locate_array_elem(array a, va_list ap, int *offset)

*offset += a.constants[i] * curdim;

} return ok;

}int get_array_elem(int *e, array a, ...)

va_end(ap);

*e = *(a.base + offset);

return ok;

}int assign_array_elem(int e, array *a, ...)

va_end(ap);

*(a->base + offset) = e;

return ok;

}int main(int argc, char *argv)

printf("\narray.contents = "); //順序輸出array.contents

p = arr.constants;

for(i = 0; i < dim; i++)

printf("\narray[%d][%d][%d] : \n", bound1, bound2, bound3);

for(i = 0; i < bound1; i++)

printf("\n");

} printf("\n");

} p = arr.base;

for(i = 0; i < bound1 * bound2 * bound3; i++) }

destory_array(&arr);

return 0;

}

gRPC 如何使用python表示多維陣列

在使用grpc作為遠端呼叫框架時,如何使用python來表示多維陣列呢?grpc中定義proto檔案時,有乙個引數是repeated,用來表示重複的資料型別,使用這個引數可以表示list型別。如下,我想表示乙個三維陣列,這個陣列表示的是乙個三通道rgb彩色影象,proto檔案如下所示,proto檔案...

陣列的順序表示和實現

c5 1.h 陣列的順序儲存結構。define max array dim 8 假設陣列維數的最大值為8 struct array bo5 1.cpp 順序儲存陣列 儲存結構由c5 1.h定義 的基本操作 5個 status initarray array a,int dim,void destro...

陣列的順序表示與實現

include include include 使用變長參數列需要引入此標頭檔案 define max dim 8 typedef struct array,parray bool init parray array,int dim,初始化,bounds的賦值採用變長參數列 bool locate ...