オブジェクトのリストを維持する「マネージャー」クラスがあります。各オブジェクトには特定の「位置」がありますが、これはオブジェクトには知られていません。マネージャーだけがこれを知っています。マネージャーは、各オブジェクトに位置を割り当て、この「外部属性」に従ってソートされたオブジェクトのリストを維持する必要があります。
オブジェクトの位置はいつでも変更できることに注意してください。理想的には、位置 X の要素または要素 X の位置をいつでもすぐに取得できる必要があります。
これは C# コードです。これを行うためのクリーンまたは慣用的な方法は何でしょうか。
次のような内部クラスを作成することを考えました:
class SortedElement {
public Element Elem { get; set; }
public int Position { get; set; }
}
次に、SortedElements のリストを維持します。わかりません、不器用に思えます。たとえば、2 つの SortedElements が同じ位置を持つ可能性があります。私が見逃している明白でクリーンな解決策があるように感じます。Position を Elements 自体のプロパティにすることもできますが、意味的には意味がありません。つまり、私の生活を楽にする以外に、それについて知る理由はありません。
私をフェイスパームに行かせてください。
編集:私の要件をリストするというエリック・リッパートのアドバイスと、良い夜の睡眠に従って、私はaを選択しLinkedList<Element>
、インデックスを位置として使用する必要があることに気付きました. 実際、ここでの最も一般的な操作は、最初の挿入とコンテナー内の任意の場所の削除であり、配列ベースのコンテナーではコストがかかります。すべての返信に感謝します。