gpt4 book ai didi

c# - 将 3D 数组的体积展平为 1D 对象数组

转载 作者:行者123 更新时间:2023-11-30 12:14:59 27 4
gpt4 key购买 nike

给我一​​个长宽均匀但深度参差不齐的3D map :

public class Map<T>
{
T[,][] map;
...
}

返回由二维区域定义的体积内存在的所有类型对象的一维数组和该区域内所有深度的最佳方法是什么。例如,我可能有一个数组符号覆盖如下:

public IEnumerable<T> this[Rectangle area]
{
get {...}
}

或者只是

public IEnumerable<T> this[int x, int y, int width, int length]
{
get {...}
}

老实说,我希望有一个快速的 LINQ 解决方案,但性能比解决方案的视觉优雅更可取。返回的展平数组中对象的顺序并不重要。如果有人对此有任何建议或经验,请分享您的智慧。

或者,如果有另一种数据结构可以执行我不知道的相同功能,我会很乐意改用它。

如果我的问题不清楚,请询问更多详情。

最佳答案

你在找这样的东西吗?

public IEnumerable<T> this[int left, int top, int width, int height]
{
get
{
return from x in Enumerable.Range(left, width)
from y in Enumerable.Range(top, height)
from i in this.map[x, y]
select i;
}
}

关于c# - 将 3D 数组的体积展平为 1D 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8448635/

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