我有一個列大小爲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?你已經改變它作爲一個非常量輸入參數 –
矢量是一個很好的解決方案?因爲代碼將用於編程挑戰,我正在考慮內存效率 –