C# 第二维数组到一维数组的引用

2023-12-14

我有一个可以接受一维数组的函数(double[])作为参数,而我的源数据是一个二维数组(double[,]) 的 'cnt' 3d 点数量,就像这样

double[,] points = new double[3,cnt]

但我真正想做的是将三个第二个暗淡数组中的每一个传递给函数gpu.Average(double[] arg),最好不必按 value[i] 复制数组 value[i] 的内容。这在 C# 中可能吗?

示例代码

这有效:

double[] points1d = new double[cnt];
// ... fill points1d with data, then
double a = gpu.Average(points1d);  // <- Alea.gpu.Average() accepts a 1d array 

但正如所说,我想将第二个维度传递给函数 gpu.Average() ,而不必运行 for 循环三次来复制到一维数组中:

double[,] points2d = new double[3,cnt];
// ... fill points2d with 'cnt' items of data and
// then pass it on

double x = gpu.Average(points2d[0,??]);  // How to pass on 2nd dim?
double y = gpu.Average(points2d[1,??]);     
double z = gpu.Average(points2d[2,??]);     

这是否可能无需将数据复制到一维数组中?

(顺便说一句,计算平均值并不是 GPU 并行库的一个很好的使用示例,这只是一个比较不同数据类型和结构的执行时间的测试用例)。

// Rolf


不,如果不复制例如的内容,这在托管代码中是不可能的。points2d[1,*]到一个新的一维数组。

在托管代码中,每个数组都必须知道其长度,以便可以检查每个索引访问并ArrayIndexOutOfBounds如果索引越界,则抛出异常。长度(整数值)存储在数组的第一个元素之前,以便运行时知道在哪里找到它。现在,我想人们可以明白为什么不能将数组分成几个部分并将它们视为新数组。请注意,对于多维数组来说,情况更加复杂,它必须存储维度数和每个维度的大小......

您可以做的是使用锯齿状数组:

double[][] points2d = new double[3][];
points2[0] = new double[cnt];
...
gpu.Average(points2d[0]);

交错数组比多维数组更快,建议使用交错数组代替多维数组甚至通过MS.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 第二维数组到一维数组的引用 的相关文章

随机推荐

  • Django 字符集和编码

    我正在尝试在 Mysql 数据库中存储和查看希腊字符 我想使用 utf8 编码 我使用以下命令更改我的数据库 ALTER DATABASE el CHARACTER SET utf8 COLLATE utf8 general ci 现在 当
  • 如何将 DOM 元素转换为 jQuery 元素?

    我正在使用 document createElement 创建一个元素 现在我如何将它传递给只接受 Jquery 对象的函数 id 我无法使用它 因为该元素尚未在页面中呈现 var elm document createElement di
  • 具有可为空值类型参数的扩展方法解析

    public static class Extension public static void Test this DateTime dt void Main var now DateTime Now Extension Test now
  • AD 计算机对象上的设置 ACL

    我正在尝试Set Acl在 AD 中的计算机对象上 首先我使用以下方法获取 ACL acl Get Acl AD CN Tester1 OU Ou1 OU OU2 OU OU3 DC Contoso DC com Access 这给了我该计
  • jQuery 可选择:如何在第一次加载时选择项目

    我正在使用 jQuery selectable 来选择 net 列表视图中的项目 用户可以选择他想要的项目 并可以通过单击保存按钮来保存它 下次当用户来到页面时 他将能够看到他之前选择的项目 使用 jQuery 可选择插件 用户可以通过单击
  • 是否有必要将 $scope 注入到 angularjs 中的控制器中? [复制]

    这个问题在这里已经有答案了 下面的两个代码片段有什么区别吗 两者都有效 1 myApp controller myAppController scope function scope function body 2 myApp contro
  • 在perl中的多行正则表达式中分割一行正则表达式

    我无法将正则表达式分成多行 我希望我的正则表达式与给定的行匹配 Code l k dfsakd lkaDald 所以我创建了这个有效的正则表达式 my firstRegexpr qr s s Code s code x 但现在我想像这样将它
  • AngularJS 1.2 跨源请求仅支持 HTTP

    有什么方法可以配置 Angular 应用程序以使其可用吗 在使用工厂时 顺便说一句 我使用本地主机作为网络服务器 但我正在向其他服务器 同一网络 发出请求 angular module demoApp factories factory d
  • C中的客户端服务器多个连接

    我试图推理用 C 语言实现的带有套接字的简单服务器如何处理并发客户端 假设一个简单的服务器等待客户端连接 然后读取客户端发送的消息 read 是一个阻塞函数 因此服务器将阻塞 直到客户端写入它 如果我们假设两个客户端同时向服务器写入数据 服
  • VB.NET 中的屏幕截图程序

    我创建了一个捕获桌面屏幕截图的应用程序 它与我在表单中使用的按钮配合得很好 但现在我想使用计时器让这个东西自动工作 但是每当我尝试运行程序时NullReferenceException发生任何人都可以告诉我这里出了什么问题吗 TimerCa
  • r - ggplot2 - 分割超过 2 组的小提琴图

    从哪里继续这个线程离开了 我想在 ggplot 2 中制作一个分割小提琴图 上面提出的方法仅限于 x 轴上的 2 个类别 Example set seed 20160229 my data data frame y c rnorm 1000
  • 如何将异步/标准库 future 转换为 futures 0.1?

    我想使用async函数逐步解析入站流 但 actix web 需要impl Future
  • 触发dialog.close 后,Word 加载项停止工作。办公JS

    我一直在开发一个 Office365 应用程序 在该应用程序中我打开了一个对话框 并在进行某种活动后使用dialog close 关闭对话框 它工作得很好 但功能区按钮停止工作 下次它不会再显示相同的对话框 Office context u
  • php中如何显示上传后的图片?

    将图像上传到文件夹后 怎么显示图片 这是我的 upload php
  • 打字稿回调函数中的“this”范围

    我无法理解 这个 上下文在打字稿中是如何工作的 我无法访问方法中的类成员 下面是我的代码 class adopterDetailCtrl public adopter IAdopter public router any static in
  • Django Admin 看起来很奇怪

    这是 Django 3 的新安装 我得到了面板的管理员外观 我在浏览器控制台中没有错误 我已经做了 python3 manage py collectstatic 一条线索 为了能够在没有 apache 500 错误的情况下看到这个管理面板
  • 如果没有 @Provides 注释的方法,则无法提供 >

    我正在尝试创建一个像这样的视图模型模块example但我遇到了这个错误 错误 如果没有 Provides 注释的方法 则无法提供 java util Map javax inject Provider gt 我遵循了所有示例 这是我的代码
  • 在 Visual Basic.NET 中构造对象而不对其进行赋值

    我已经使用 VB net 好几年了 但总是遇到一些我不知道如何解决的小问题 好奇心终于战胜了我 所以我现在问 有没有一种方法可以创建一个对象而不分配它 例如 假设我有一个 Engine 类 我想实例化它并让它立即执行它需要执行的任何操作 如
  • Windows 上的 symfony2 assetics yui 压缩器(路径语法)

    我正在尝试让 assetics 与 yui 压缩器一起运行 如果正在运行 则使用 sass 目前 两者都不起作用 当从 config yml 和 twig 模板中删除所有过滤器时 它可以工作并且php app console assetic
  • C# 第二维数组到一维数组的引用

    我有一个可以接受一维数组的函数 double 作为参数 而我的源数据是一个二维数组 double 的 cnt 3d 点数量 就像这样 double points new double 3 cnt 但我真正想做的是将三个第二个暗淡数组中的每一