如何在C#中的数据表中存储N维向量?

时间:2009-05-18 12:59:43

标签: c# datatable

如何在C#中的数据表中存储N维向量?

2 个答案:

答案 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)

如果事先知道尺寸数,您可以在每个尺寸上创建一个“列”。