1

インデックスが連続していない (ただし昇順でのみ追加される) 配列に対して C# で使用するコレクション型はどれですか?

たとえば、オブジェクト A、B、および C をインデックス 2、4、および 7 で追加した場合、インデックス (2/4/7) または場所 (1/2/3 または 0/1/2 の両方) でアクセスする必要があります。仕事)。

4

2 に答える 2

2

インデックスでアクセスできるようにオブジェクトを保存するには、を使用する必要がありますが、場所を保存しないので、「場所」を保存するためのDictionary何らかの種類も必要になります。これらを独自のクラスに結合し、追加を1つの操作として処理して、同期していることを確認します。ListDictionary

1つだけを使用する場合は、を使用しListてループし、キーを検索できますが、線形のO(N)時間がかかります。

編集

Matthew Strawbridgeが指摘しているように、このBinarySearchメソッドはO(log N)内の要素を検出するため、辞書の使用をスキップできます。

于 2013-02-17T20:31:44.727 に答える
1

を使用しDictionaryます。

using System.Collections.Generic;

Dictionary<int, type> dict = new Dictionary<int, type>();

// Add values:
dict.Add(2, A);
dict.Add(4, B);
dict.Add(7, C);

// by index:
var A = dict[2];
var B = dict[4];
var C = dict[7];

// by place:
var A = dict.ElementAt(0);
var B = dict.ElementAt(1);
var C = dict.ElementAt(2);
于 2013-02-17T20:26:14.470 に答える