1

長い (10000 以上のエントリ) 構造体のリストがあり、それぞれに int[16] が含まれています。データを転置して、10000 以上のエントリを持つ 16 個の int[] 配列を作成したいと考えています。基本的に、データを転置したい。リストを繰り返し処理して新しいエントリを作成するよりも速い方法はありますか?

4

2 に答える 2

0

では、int[16] の配列だけが必要ですか?

多分linqはこれを行うことができます

var newArray = fooArray.Select(foo => foo.IntVal).ToArray();
于 2012-11-24T08:31:55.253 に答える
0

このようなことをする必要があります:

struct Widget
{
  public int[] Values = new int[16]; 
}

public int[][] TransposeWidgets( List<Widget> widgets )
{
  int cols;
  int[][] result = new int[][];

  for ( int row = 0 ; i < 16 ; ++row )
  {
    results[row] = new int[ widgets.Count ];
    for ( int col = 0 ; col < widgets.Count ; ++col )
    {
      result[row][col] = widgets[col].Values[row];
    }
  }

}

ただし、大きなリストを 1 回だけ反復処理する方が高速な場合があります。それが非常に大きい場合、そのリストを繰り返し処理するとページングが発生し、速度が低下する可能性があります。

于 2020-08-14T22:05:01.477 に答える