问题很简单——比如说,我得到了函数,它接收数组作为参数
void calc(double[] data)
如何将这些数据“拆分”成两个子数组并像这样传递给子函数
calc_sub(data(0, length/2));
cals_sub(data(length /2, length /2));
我希望,你明白了——我会用 C++ 写这个
void calc(double * data, int len)
{
calc_sub(data, len / 2); //this one modifies data!!
calc_sub(data + len / 2, len / 2); //this one modifies data too!!
}
如何在没有不必要的内存复制的情况下在 C# 中做同样的事情? 我在这里需要 2 个内存副本。 1)从数据到拆分数据 2) 计算子 3)从拆分数据回到数据!这是对时间和内存的巨大浪费!
最佳答案
最简单的可能是使用 LINQ Take和 Skip扩展方法:
int half = data.Length / 2;
double[] sub1 = data.Take(half).ToArray();
double[] sub2 = data.Skip(half).ToArray();
关于C#数组题(拆分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3328796/