Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c语言中将两个一维数组合并到一个二维数组中#_C#_Arrays_Multidimensional Array - Fatal编程技术网

C# 在c语言中将两个一维数组合并到一个二维数组中#

C# 在c语言中将两个一维数组合并到一个二维数组中#,c#,arrays,multidimensional-array,C#,Arrays,Multidimensional Array,我有两个一维阵列。我想将这两个数组转换为单个2D数组 我的代码是: public Static void Main() { int[] arrayRow; int[] arrayCol; for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { int[,] myArray = new int[row,column]; myArray[i,j] = arra

我有两个一维阵列。我想将这两个数组转换为单个2D数组

我的代码是:

public Static void Main()
{
int[] arrayRow;
int[] arrayCol;
  for (int i = 0; i < row; i++)
  {
   for (int j = 0; j < column; j++)
     {
       int[,] myArray = new int[row,column];
       myArray[i,j] = arrayRow[i]; // not possible -- your suggestions           
     }
   }
for (int i = 0; i < row; i++)
  {
   for (int j = 0; j < column; j++)
     {
       Console.Write(myArray[i,j]);         
     }
   }
}
publicstaticvoidmain()
{
int[]arrayRow;
int[]arrayCol;
对于(int i=0;i
我需要将
arrayRow[]
arrayCol[]
保存在
myArray[,]

比如说,

如果我们有
arrayRow[]={1,2,3}
arrayCol[]={4,5,6}
那么myArray[,]={(1,4)、(2,5)、(3,6)}


注意:
arrayRow
arrayCol
可能具有不同的长度。在这种情况下,没有对的元素应该存储在新的一维数组
result[]

我没有尝试过这个,我只是在猜测你想要完成什么,但这里是:

int[] arrayRow;
int[] arrayCol;

int[,] myArray = new int[Math.Max(arrayRow.Length, arrayCol.Length), 2];

for (int i = 0; i < arrayRow.Length; i++)
  myArray[i, 0] = arrayRow[i];

for (int i = 0; i < arrayCol.Length; i++)
  myArray[i, 1] = arrayCol[i];
int[]arrayRow;
int[]arrayCol;
int[,]myArray=newint[Math.Max(arrayRow.Length,arrayCol.Length),2];
for(int i=0;i
您的
arrayRow[]
arrayCol[]
将只是二维数组的两行(如果您不是指锯齿状数组的话)

因此,将两个数组合并为一个数组的代码如下:

public static T[,] Union<T>(T[] first, T[] second) //where T : struct
{
    T[,] result = new T[2, Math.Max(first.Length, second.Length)];
    int firstArrayLength = first.Length * Marshal.SizeOf(typeof(T));
    Buffer.BlockCopy(first, 0, result, 0, firstArrayLength);
    Buffer.BlockCopy(second, 0, result, firstArrayLength, second.Length * Marshal.SizeOf(typeof(T)));
    return result;
}
如果我们将多个数组作为参数添加到功能中,这将变得更加简单:

public static T[][] UnionJagged<T>(params T[][] arrays)
{
    return arrays;
}

static void Main()
{
    int[] a = new int[] { 10, 2, 3 };
    int[] b = new int[] { -1, 2, -3 };
    int[] c = new int[] { 1, -2, 3 };
    int[][] jaggedThing = UnionJagged(a, b, c);
}
publicstatict[]UnionJagged(参数T[]]array)
{
返回阵列;
}
静态void Main()
{
int[]a=新的int[]{10,2,3};
int[]b=新的int[]{-1,2,-3};
int[]c=新的int[]{1,-2,3};
int[][]锯齿形=联合锯齿形(a、b、c);
}

更高性能/另一种方式:

public static void ConvertFlatArrayToMatrix(int[] array, int[,] matrix, int dimension) {
        for(int i = 0; i < array.Length; i++) {
            int r = Mathf.FloorToInt(i / dimension);
            int c = i % dimension;

            matrix[c,r] = array[i];
        }
    }
公共静态void ConvertFlatArrayToMatrix(int[]数组,int[,]矩阵,int维){
for(int i=0;i
这只会将结果推送到传入的2d数组中


请记住,我并不是在这里检查长度或防范任何事情,这只是完成工作的概念和最低限度。

你说的“不可能”是什么意思?此外,还不清楚您实际想要应用什么转换。例如,如果你有
arrayRow={1,3,5}
arrayCol={2,6,8}
你希望结果是什么?结果是myArray={(1,2)、(3,6)、(5,8)},所以你总是希望它是
int[arrayRow.length][2]
?如果
arrayRow
arrayCol
是不同的长度会怎样?是的,它们具有从以前的实现结果动态生成的不同长度。如果元素不存在,则将追加0。在这种情况下,您希望如何处理它们?基本上,你需要让你的问题更清楚。我们不应该玩20个问题来理解你想要达到的目标。请看+1,我同意你的看法,但我认为OP目前无法用所有先进技术进行试验。
public static void ConvertFlatArrayToMatrix(int[] array, int[,] matrix, int dimension) {
        for(int i = 0; i < array.Length; i++) {
            int r = Mathf.FloorToInt(i / dimension);
            int c = i % dimension;

            matrix[c,r] = array[i];
        }
    }