C# で 2D データ構造を作成する際に使用するアプローチを決定するのに役立つリソースを探しています。
5 に答える
多次元配列のことですか?それは簡単です:
<type>[,] <name> = new <type>[<first dimenison>,<second dimension>];
MSDN リファレンスは次のとおりです。
@Traumapony-実際のパフォーマンスの向上は1つの巨大なフラット配列で行われると実際に述べていますが、それは私のC ++画像処理のルーツが示しているだけかもしれません.
それは、2D 構造で何をする必要があるかによって異なります。2 番目の次元のアイテムの各セットが同じサイズである何かを格納する場合は、大きな 1D 配列のようなものを使用する必要があります。これは、シーク時間が速くなり、データ管理が容易になるためです。お気に入り:
for (y = 0; y < ysize; y++){
for (x = 0; x < xsize; x++){
theArray[y*xsize + x] = //some stuff!
}
}
そして、単一のパススルーで隣接するピクセルを無視する操作を実行できます。
totalsize = xsize*ysize;
for (x = 0; x < totalsize; x++){
theArray[x] = //some stuff!
}
ただし、C# では、この種の処理を行うために実際に C++ ライブラリを呼び出したいと思うでしょう。特に Intel コンパイラを使用する場合は、C++ の方が高速になる傾向があります。
複数の異なるサイズを持つ 2 番目の次元がある場合、私が言ったことは何も当てはまらず、他のソリューションのいくつかを検討する必要があります。質問に答えるためには、機能要件が何であるかを知る必要があります。
データのタイプによっては、2 次元配列を使用して調べることができます。
int[][] intGrid;
トリッキーになる必要がある場合は、いつでもジェネリックアプローチを使用できます。
Dictionary<KeyValuePair<int,int>,string>;
これにより、複雑な型をディクショナリの値の部分に入れることができますが、要素へのインデックス作成はより困難になります。
空間的な 2D ポイント データを格納する場合、System.Drawing は 2D 空間のポイントを多くサポートしています。
真剣に、私は質問を批判しようとしているわけではありませんが、Google で検索すると、検索の一番上にたくさんの有用な結果が得られました。
data structures c#
特定のデータ構造について特定の質問がある場合は、より具体的な回答があるかもしれません...
パフォーマンスのために、多次元配列 ([,]) を使用しないことをお勧めします。代わりに、ジャグ配列を使用してください。例えば:
<type>[][] <name> = new <type>[<first dimension>];
for (int i = 0; i < <first dimension>; i++)
{
<name>[i] = new <type>[<second dimension>];
}
アクセスするために:
<type> item = <name>[<first index>][<second index>];