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# 第二维数组到一维数组的引用 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 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 但我真正想做的是将三个第二个暗淡数组中的每一