1

我有一个很长的(10000 多个条目)结构列表,每个结构都包含一个 int[16]。我想转置数据以创建 16 个 int[] 数组,这些数组长 10000 多个条目。本质上,我想转置数据。有没有比遍历列表和创建新条目更快的方法?

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];
    }
  }

}

尽管只对大列表进行一次迭代可能会更快。如果它真的很大,迭代该列表可能会导致分页,这会减慢速度。

于 2020-08-14T22:05:01.477 回答