首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从多个一维高效地创建矩形二维阵列

从多个一维高效地创建矩形二维阵列
EN

Stack Overflow用户
提问于 2013-07-15 01:46:19
回答 2查看 180关注 0票数 2

除了循环之外。有没有一种有效的方法从多个一维数组实例化一个二维数组?

我的一维数组必须在我的二维矩形数组中表现为列向量。因此,列0=第一个一维数组,列1=第二个一维数组,依此类推...

我也尝试过System.Buffer.BlockCopy,但块复制会将单个1D数组滚动成多列,这不是我想要的。

我想如何转换的简单示例:

代码语言:javascript
复制
var c1 = new int[] {1, 2, 3, 4};
var c2 = new int[] {5, 6, 7, 8};
var result = new int[,]
            {{1,5},
             {2,6},
             {3,7},
             {4,8}};
EN

回答 2

Stack Overflow用户

发布于 2013-07-15 03:23:33

使用unsafe代码和指针进行循环将是C#可以提供的最快的方法。使用unsafe,因为它消除了边界检查,这在本例中是无法消除的。

在写入时,按内存顺序依次循环二维数组。这意味着您需要逐行写入,而不是逐列写入。这个技巧优化了内存访问,允许您只增加写指针,而不是每次都计算地址(y*width+y)。

票数 0
EN

Stack Overflow用户

发布于 2013-07-15 05:41:01

除了循环之外,这样做也可以(因为您没有指定这也是一个无解决方案):

代码语言:javascript
复制
            var c1 = new int[] { 1, 2, 3, 4 };
            var c2 = new int[] { 5, 6, 7, 8 };
            var c3 = new int[,]
            {
                {c1[0],c2[0]},
                {c1[1],c2[1]},
                {c1[2],c2[2]},
                {c1[3],c2[3]}
            };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17641963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档