gpt4 book ai didi

C#如何: transform a range from one array to another

转载 作者:搜寻专家 更新时间:2023-10-31 01:31:54 25 4
gpt4 key购买 nike

假设我有两个名为 ABdoulbe 数组。

我想从 A 中取出一部分(范围),对该部分中的每个元素应用一些函数并将结果保存到 B 的一部分(范围)中>.

我确实知道如何使用 std::transform 用 C++ 实现它。

但是 C# 呢?

附言C++代码:

double *src = new double[100];
double *dst = new double[24];

std::generate(src,src+100,[]() { return 0.25; } );
std::generate(dst,dst+24,[]() { return 1.0; } );

std::transform(src+12,src+24,dst+12, [](double d) { return d*d*sqrt(d); } );

delete[] src;
delete[] dst;

enter code here

最佳答案

您可以使用 LINQ 进行转换。由于您要在最后删除 dst,并在转换期间将其完全填充,因此没有必要写入现有数组:

var src = Enumerable.Range(0, 100).Select(_ => 0.25).ToArray();
var dst = src.Skip(12).Take(12).Select(d => d*d*Math.Sqrt(d)).ToArray();

I have to overwrite only a part of B using only a part of A

如果您需要覆盖现有条目,请使用CopyTo 方法:

var src = Enumerable.Range(0, 100).Select(_ => 0.25).ToArray();
var dst = new double[50];
src.Skip(12).Take(12).Select(d => d*d*Math.Sqrt(d)).ToList().CopyTo(dst, 31);

关于C#如何: transform a range from one array to another,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44632506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com