【发布时间】:2009-05-18 12:59:43
【问题描述】:
如何在 C# 中将 N 维向量存储在数据表中?
【问题讨论】:
如何在 C# 中将 N 维向量存储在数据表中?
【问题讨论】:
对于真正的 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;
其中任何一个通常都可以包装在一个类中,这可能是明智的做法。
【讨论】:
如果预先知道维度的数量,您可以只为每个维度创建一个“列”。
【讨论】: