Re: [問題] 函式怎麼回傳二維或三維陣列

看板C_and_CPP作者 (天亮damody)時間10年前 (2014/04/27 01:12), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《pudding86200 (貓頭鷹咕咕)》之銘言: : 如題 : 演算法想要用函式來取得多維矩陣的初始解 : 可是我發現會卡在一個BUG 爬文也看不懂 : 開一個矩陣ini[2][2] : 以下是我的程式碼 : 我只希望在main裡面可以呼叫test()然後把矩陣裡面的值給存取出來 : #include "stdafx.h" : #include "stdlib.h" : #include "iostream" : using namespace std; : void test(int* ini) : { : ini[0][0]=1; : ini[0][1]=2; : ini[1][0]=1; : ini[1][1]=2; : } : int _tmain(int argc, _TCHAR* argv[]) : { : int ini[2][2]={0}; : test (&ini[0][0]); : cout<<ini[0][0]<<endl<<ini[0][1]; : system("pause"); : return 0; : } : 可是執行出現了一句話 : "註標必須使用在陣列或指標型別上" : 想請問一下各位高手們我這段程式是哪邊錯了 int* 不能中括號取兩次,這邊錯了。 // method 1 modify vector 2d void InitData(std::vector<std::vector<int>>& datas, int s1, int s2) { datas.resize(s1); for (int i=0;i<s1;++i) { datas[i] = std::vector<int>(s2, 0); } } // method 2 return vector 2d std::vector<std::vector<int>> InitData(int s1, int s2) { std::vector<std::vector<int>> datas(s1); for (int i=0;i<s1;++i) { datas[i] = std::vector<int>(s2, 0); } return datas; } // method 3 return pointer int** InitData(int s1, int s2) { int i; int **Array, *pData; Array = (int**)malloc(s1*sizeof(int *)+s1*s2*sizeof(int)); for (i = 0, pData = (int *)(Array+s1); i < s1; i++, pData += s2) Array[i]=pData; return Array; } 看心情,隨便想都有三種方法,剩下的舉三反十。 相信你可以的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.118.175.39 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1398532350.A.D77.html

04/27 01:24, , 1F
vector<std::vector<int>>
04/27 01:24, 1F

04/27 01:24, , 2F
在舊的compiler要寫 vector<std::vector<int> >
04/27 01:24, 2F

04/27 01:24, , 3F
不然會error XDD
04/27 01:24, 3F
文章代碼(AID): #1JM-Z-rt (C_and_CPP)
文章代碼(AID): #1JM-Z-rt (C_and_CPP)