我有一个列大小为2,行大小为x的2d数组。我想根据每行的第一列的值进行插入排序。所以如果给定的数组是[[2,3],[4,1],[5,6],[1,6]]我的输出数组将是[[1,6],[2,3],[ 4,1],[5,6]]。我已经为此编写了C++函数。但是当我试图返回数组时,有一个问题。它说“从int(*)[2]到int的无效转换”。因为我不是很用C++经验,我不知道如何解决这个问题,为什么这是cause.Here是我的功能:从C++中的函数转换为2d数组无效无效
int* Insertion(int arr[][2],int x)
{
for(int i=0;i<x;i++)
{
for(int j=i;j>0;j--)
{
if(arr[j][0]<arr[j-1][0])
{
int temp1=arr [j][0];
int temp2=arr [j][1];
arr [j][0]=arr[j-1][0];
arr[j][1]=arr[j-1][1];
arr[j-1][0]=temp1;
arr[j-1][1]=temp2;
}
}
}
return arr;
}
请告诉我为什么你不使用引用和'std :: vector' –
你为什么要从这个函数返回arr?你已经改变它作为一个非常量输入参数 –
矢量是一个很好的解决方案?因为代码将用于编程挑战,我正在考虑内存效率 –