私のプログラムにはセルのグリッドがあり、効率的に行または列番号のどちらかを照会できるようにしたいと考えています。これを行うにはどのような構造を使うべきですか?コンポジットキーで辞書から値を取得する方法は?
たとえば、私は次のメソッドを持っているしたいと思います。私の最初の試みは、構造体の複合キーと2つのフィールド(行と列)と辞書を持つ構造体を作成することでした
CellsCollection.GetCell(Int32 row, Int32 column)
CellsCollection.GetAllCellsInRow(Int32 row)
CellsCollection.GetAllCellsInColumn(Int32 column)
:
Dictionary<struct, cell>
。
CellsCollection.GetCell(Int32 row, Int32 column)
は、コンポジットキーで辞書にクエリするので問題ありません。
他の2つは(行/列のセルを取得する)私がしなければため、問題を提示:
dictionary.Where(keyPair=>keyPair.Key.Row == row).Select(keyPair=>keyPair.Values.Cell)
次に辞書のキーは、議論の余地になり、プログラムが辞書内のすべてのキーを通過しなければなりません。
私はネストされた辞書(行キーを持つ外側のものと列キーを持つ内側のもの)を考えましたが、私は列ではなく行で照会している場合にのみ役立ちます。
これをどのように克服しますか?
列内のすべてのためにそれはそれだけでうまくいくかもしれないので、クレイジーです!今度はもっと多くの行/列が必要になるので、配列のサイズを変更する必要はありませんか? (私はちょうど場合のために行と列の最大数を割り当てることはできません)。 – Manuel
辞書と配列の両方でテストしたところ、配列の方が高速でメモリも少なくて済みました。 – Manuel