【问题标题】:c++ jagged array slice in c#c#中的c ++锯齿状数组切片
【发布时间】:2013-12-27 08:26:38
【问题描述】:

在c++中可以得到一个多维数组的切片,比如

  double parallelopipedPts[8][3];
  parallelopipedPts[0];
  parallelopipedPts[1];
  ...
  parallelopipedPts[7];

在c#中我试图模仿这个并尝试过

  double[][] parallelopipedPts = new double[8][];
  parallelopipedPts[0];
  parallelopipedPts[1];
  ...
  parallelopipedPts[7];

但是我遇到了内存访问问题

如何解决?

【问题讨论】:

  • 你能扩展一下吗?你希望回归什么元素?还是你想返回元素的地址?
  • 我想得到一个锯齿状数组的切片(一维),如何在 c# 中做到这一点?
  • 你不能。见这里:stackoverflow.com/a/4802062/1517578
  • 关于那个问题 OP 声明他使用矩形数组,但是如果使用锯齿状数组,会不会像该问题的答案中所说的那样更快?

标签: c# c++


【解决方案1】:

在您的 C# 代码中,您创建了一个包含 8 个“双数组”的数组。

8 个数组中的双精度数组尚未分配,因此它们为空。

您可以使用 3 个双精度数组(例如)填充它,如下所示:

for (int i = 0; i < parallelopipedPts.Length; i++)
{
    parallelopipedPts[i] = new double[3];
}

然后你就可以安全地使用你的子数组了。

【讨论】:

  • 不,double[][] parallelopipedPts = new double[8][3];不会编译。
  • for循环是唯一的出路吗?
  • 公平地说,我从来没有费心尝试在 C# 中创建这样的数组,因为我宁愿构建一个附加更多信息的专用类。
猜你喜欢
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 2011-09-13
  • 2016-12-20
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
相关资源
最近更新 更多