如何在C#中的数据表中存储N维向量?
答案 0 :(得分:3)
对于真正的n维东西,你可能不得不放弃更简单的概念 - 可能是一个多维数组(T[,...,]
)。
如果维度数量已知且常数(但> 1),则锯齿状数组(T[]...[]
)或使用List<T>
等包装器等内容都是可行的。
使用未知维度Array
的示例:
int[] dimensions = { 3, 2, 5 }; // etc
Array arr = Array.CreateInstance(
typeof(int), dimensions);
int[] index = {0,0,0}; // etc
arr.SetValue(3, index);
但显然,如果尺寸已知,则更容易:
int[, ,] arr = new int[3, 2, 5];
arr[0, 0, 0] = 3;
多维数组的问题在于它们很快就会变得太大而无法触及CLR ...这是锯齿状数组或其他包装器派上用场的地方(通过将它分成多个较小的对象) - 但是进行构建更难:
int[][][] arr = new int[3][][];
for(int i = 0 ; i < 3 ; i++) {
arr[i] = new int[2][];
for(int j = 0 ; j < 2 ; j++) {
arr[i][j] = new int[5];
}
}
arr[0][0][0] = 3;
这些中的任何一个通常都可以包含在一个类中,这可能是一种明智的方法。
答案 1 :(得分:1)
如果事先知道尺寸数,您可以在每个尺寸上创建一个“列”。