[問題] 多維向量傳入函式

看板C_and_CPP作者 (浩)時間10年前 (2014/04/08 13:51), 編輯推噓2(207)
留言9則, 4人參與, 最新討論串1/1
在C++下 我的code int main() { ... vector<int> vec[2]; vec[0].push_back(5); vec[1].push_back(6); dosomething(&vec); return 0; } void dosomething(vector<int> *vec) { cout<<vec[0][0]<<endl; cout<<vec[1][0]<<endl; } 但是compile卻出現錯誤訊息:不能從 「std::vector<int> (*)[2]」 轉換到 「std::vector<int>*」,為引數 「1」(屬 於「void dosomething(std::vector<int>*)」) 請問應該怎麼修改? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.121 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1396936298.A.7D2.html

04/08 14:10, , 1F
dosomething(vec);
04/08 14:10, 1F

04/08 14:10, , 2F
我其實不清楚為啥這樣可以..有沒有大德可以幫解答= =
04/08 14:10, 2F

04/08 14:19, , 3F
剛試了一下 dosomething(&vec[0])也是可以
04/08 14:19, 3F

04/08 15:18, , 4F
vec和 &vec[0]都可以作為vector<int>*
04/08 15:18, 4F

04/08 15:19, , 5F
但&vec就屬於vector<int> (*)[2]類型 因此不適合
04/08 15:19, 5F

04/08 15:20, , 6F
// 以上指導來自cutekid大 感謝他
04/08 15:20, 6F

04/08 18:07, , 7F
就像陣列一樣傳入基底位址阿
04/08 18:07, 7F

04/08 18:50, , 8F
你把 vector<int> 換成 int 就懂為什麼了
04/08 18:50, 8F

04/09 11:24, , 9F
vec本身就是pointer,不需要加&
04/09 11:24, 9F
文章代碼(AID): #1JGuvgVI (C_and_CPP)