LinQでも使える2次元配列
2次元配列でLinQを使ったら1次元配列扱いになって不便だったので、LinQでも(2次元座標が)使える2次元配列のクラスを作りました。
実装
使い方
LinQで2次元配列の要素の2次元座標を取得できます。
以下は使用例です。
// 幅10, 高さ10の二次元配列を作成
var width = 10;
var height = 10;
var ary = new Array2D<int>( width, height );
// 各要素に0~2のランダムな値を代入
for( int y = 0; y < height; y++ ) {
for( int x = 0; x < width; x++ ) {
ary.Set( x, y, Random.Range( 0, 3 ) );
}
}// "xが0"の要素に3を代入
ary.Set( elem => elem.x == 0, 3 );
// "xが5,またはyが3" の要素を全取得
var ary2 = ary.Where( elem => elem.x == 5 || elem.y == 3 );
// "valueが1" の要素を全取得
var ary3 = ary.Where( elem => elem.value == 1 );
// "xが5,またはyが3" かつ "valueが1"の全要素に
foreach( var elem in ary2.Union(ary3) ) {
// なんかする
}
参考記事