Tag: 多维数组

如何在C中初始化多维Char数组?

我正在尝试将一些代码从C#转换为C,以便将其刻录到微控制器上。 请问有人可以告诉我如何将C#中的二维字符串数组转换为C语言中的某些内容? 我的C#代码如下所示: string[,] DirectionPosition = {{“00”, “10”, “”, “01”, “”}, {“01”, “11”, “”, “02”, “00”}, {“02”, “12”, “”, “03”, “01”}, {“03”, “13”, “”, “04”, “02”}, {“04”, “14”, “”, “”, “03”}, {“10”, “20”, “00”, “11”, “”}, {“11”, “21”, “01”, “12”, “10”}, {“12”, “22”, “02”, “13”, “11”}, . . . . {“44”, “”, “34”, “”, “43”},}; […]

将一个3D数组的体积展平为一维对象数组

给我一个类型的3D地图,其长度和宽度是均匀的但深度是锯齿状的: public class Map { T[,][] map; … } 返回由2D区域定义的体积内存在的所有类型对象的1D数组以及该区域内所有深度的最佳方法是什么。 例如,我可能有一个数组符号覆盖,如下所示: public IEnumerable this[Rectangle area] { get {…} } 要不就 public IEnumerable this[int x, int y, int width, int length] { get {…} } 老实说,我希望有一个快速的LINQ解决方案,但性能优于解决方案的视觉优雅。 返回的展平数组中对象的顺序并不重要。 如果有人对此有任何建议或经验,请分享您的智慧。 或者,如果有我可以使用的另一个数据结构可以执行我不知道的相同function,我很乐意使用它。 如果我的问题不清楚,请询问更多细节。

如何初始化2Darrays数组?

我有一组2D数组。 例如,它就像: {{{0, 0, 1}, {1, 0, 0}} {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}} {{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}} 但如果我写 int [,][] arrays={{{0, 0, 1}, {1, 0, 0}} {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, […]

复制C#多维数组元素的最有效方法是什么?

在C#中从一个多维数组复制到另一个多维数组时,嵌套循环的最有效方法是什么? 每个数组的上限和下限都不同,所以我不认为 Array.Copy()会为我做这个工作。 我目前有以下内容: for (int x = lower.X; x <= upper.X; x++) { for (int y = lower.Y; y <= upper.Y; y++) { for (int z = lower.Z; z <= upper.Z; z++) { copy[x, y, z] = Elements[x, y, z]; } } } 这是一个相对较低级别的优化,编译器会为我处理这个问题吗? 当目标具有不同的上限和下限时,是否有更好的方法来复制多维数组的元素?

C#数组最大值

我在C#中有两个名为Arr1和Arr2数组。 它们的尺寸完全相同…… 我需要从给定索引开始,获取Arr1的元素,该元素对应于Arr2中的最大元素… 例如 获得所有i , j的最大值Arr2 [ 1 , 10 , 3 , i , j ]索引 返回Arr1 [ 1 , 10 , 3 , i , j ] 当然我需要优雅的解决方案(而不是“循环为他们”一个…) 请注意: 我不想循环遍历数组,因为它是11维!!代码将是丑陋和容易出错.. 我可能会用尽变量名:) 编辑: 通常的解决方案是: for(int i=0;i<10;i++) for(int j=0;j<10;j++) if(Arr2[1,10,3,maxi,maxj]<Arr2[1,10,3,i,j]) { maxi=i maxj=j } return Arr1[1,10,3,maxi,maxj]; 但我需要在更少和更漂亮的代码中做到这一点..可能正在使用querys或linq ..

大型多维数组(Jagged Array)C#的解决方法?

我正在尝试初始化三维数组以加载体素世界。 地图的总大小应为( 2048/1024/2048 )。 我试图初始化一个“int”的锯齿状数组 ,但我抛出了一个内存exception。 尺寸限制是多少? 我桌子的大小:2048 * 1024 * 2048 = 4’191’893’824 有人知道解决这个问题吗? // System.OutOfMemoryException here ! int[][][] matrice = CreateJaggedArray(2048,1024,2048); // if i try normal Initialization I also throws the exception int[, ,] matrice = new int[2048,1024,2048]; static T CreateJaggedArray(params int[] lengths) { return (T)InitializeJaggedArray(typeof(T).GetElementType(), 0, lengths); } static object InitializeJaggedArray(Type type, […]

使用LINQ获取二维数组的最小值和最大值

你如何使用LINQ获得二维数组的最小值和最大值? 要清楚,我的意思是数组中所有项目的最小值/最大值(不是特定维度的最小值/最大值)。 或者我只是要以老式的方式循环?

在2D数组中交换元素C#

我正在使用C#,我对这门语言很新,但之前我使用过类似的语言,所以我理解基本的语法。 我有一个Object类型的2D数组。 ( X代表什么值, Y代表什么记录)它在第0列和第1列中存储两个字符串,在2中存储MessageBoxButtons在3中存储MessageBoxButtons 。 我想能够交换两个记录。 每次对数组进行更改时,我都会使用第1列填充listBox。 (使用循环)我很满意这个系统。 我已经在listBox的一侧放置了+和 – 按钮,但我无法弄清楚如何在它后面执行代码。 我想要它,以便当我点击+按钮时,它会将当前选定的记录碰到一条记录。 (IE它减少了它的Y位置并增加了它上面的记录的Y坐标)它需要碰撞与该记录相关的所有值。 有人可以为我提供这样做的function吗? 我希望我能够解释得这么好。

多维数组与一维数组

这基本上是对这个问题的重述: Java:多维数组与一维数,但对于C#。 我有一定数量的元素可以作为网格存储。 我应该使用数组[x * y]还是数组[x] [y]? 编辑:哦,所以有一维数组[x * y],多维数组[x,y]和锯齿状数组[x] [y],我可能想要锯齿状?

C#动态多维数组

我有一个function…… private double[,] AddToArray(double[,] array, double[] dataToAdd) { // Make a new row at the end of ‘array’ and copy values // from ‘dataToAdd’ into the new row. // // Return the new, modified array. } 然而’double [,]’不是动态的,我不知道数组的最终大小是多少。 我可以从它创建一个List并将新行添加到列表中,但是我似乎无法将其转换回double [,]。 List.ToArray()想要输出锯齿状数组(double [] [])。 这不行。 我正在与LabVIEW开发的程序接口,LV拒绝接受锯齿状arrays。 LV很满意固定数组([,])。 有帮助吗?