1

我需要一个具有行和列的多维数据结构。

  • 必须能够在数据结构中的任何位置插入元素。示例:{A , B}我想在和C之间插入。.AB{A, C, B}
  • 动态:我不知道数据结构的大小。
  • 另一个例子:我知道我想插入元素的 [row][col]。前任。insert("A", 1, 5), 其中A是要插入的元素1,是,5

编辑
我希望能够像这样插入。

    static void Main(string[] args)
    {
        Program p = new Program();
        List<List<string()>> list = new List<List<string>()>();
        list.Insert("RAWR", 1, 2); // RAWR is the element to insert, 1 is the row, 2 is the col.
        list.Insert("Hello", 3, 5);
        for (int i = 0; i < list.Count; i++)
        {
            Console.WriteLine(list[i]);
        }
        Console.ReadKey();
    }

当然这不起作用,因为列表不支持此功能。我知道这段代码很糟糕,但我只想了解我想要完成的事情。

所以从某种意义上说,我会有一个用户来选择将元素插入到哪个 ROW 和 COL。

4

3 回答 3

2

我认为列表列表应该可以正常工作:

IList<IList<T>> multiDim = new List<IList<T>>();

您可以像这样插入新行:

multiDim.Insert(atRow, new List<T>());

或在特定行中插入新元素:

multiDim[row].Insert(atColumn, myElement);

请注意,您需要在列表中有足够的元素才能调用Insert; 否则,您将得到一个超出范围的异常。解决这个问题的最简单方法是编写一个小的实用程序方法,在可以插入之前添加空项:

private static Expand<T>(IList<T> list, int index) {
    while (list.Count < index) {
        list.Add(default(T));
    }
}

重写你的程序如下:

Expand(list, 1);
list.Insert(1, "HELLO");
Expand(list, 5);
list.Insert(5, "RAWR");
于 2012-10-23T16:38:20.297 回答
2

也许字典可以与元组一起使用,因为它是关键:

Dictionary<Tuple<int, int>, string> dict = new Dictionary<Tuple<int, int>, string>();
dict.Add(new Tuple<int, int>(1, 5), "A");
于 2012-10-23T16:54:46.010 回答
0

SortedDictionary<int, T>如果您的键是整数或任何有序的字符串,则似乎非常适合。只需将项目按键放入字典即可。

var sparseArray = new SortedDictionary<int, string>();
sparseArray.Add(1, "notepad.exe");
sparseArray.Add(5, "paint.exe");
sparseArray.Add(3, "paint.exe");
sparseArray.Add(2, "wordpad.exe");
于 2012-10-23T16:56:31.263 回答