C#数组题(拆分)

标签 c# arrays memory copy

问题很简单——比如说,我得到了函数,它接收数组作为参数

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 TakeSkip扩展方法:

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/

相关文章:

c# - 选项过滤器的下拉列表层次结构

c# - 在不使用循环的情况下更新 C# 中的数据表?

c - 使用双指针将数组传递给函数

java - Thread中List的内存范围

由于内存中断,Tomcat 被 docker 容器杀死

c# - 最佳异步 while 方法

c# - DocuSign 连接 Webhook 与 .Net Core 3

javascript - 从 Java 创建 JavaScript 对象数组

php - 尝试在 PHP 中组合数组中的值

memory - 从 16 位硬件寄存器读取