1

行と列を持つ多次元データ構造が必要です。

  • データ構造の任意の場所に要素を挿入できる必要があります。例:との間に{A , B}挿入したい。.CAB{A, C, B}
  • 動的: データ構造のサイズがわかりません。
  • 別の例: 要素を挿入したい場所の [行][列] を知っています。元。insert("A", 1, 5)ここで、は挿入Aする要素1は行5です。

EDIT
このように挿入できるようにしたいです。

    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 に答える