[問題] 二維vector值的錯亂

看板C_and_CPP作者 (藏)時間14年前 (2011/06/22 02:27), 編輯推噓2(206)
留言8則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) opencv 問題(Question): 在main宣告了一個2D vector "p" 裏面裝的視自己定義的一個class型別 在傳到外部函式填好值以後 當call回使用時 一但用到 "p[i][j].XXX"時 內部的值就會變亂 推測不知道是不是填的方式錯誤 或者是呼叫的方式有問題 程式碼(Code):(請善用置底文網頁, 記得排版) 填入的程式碼: for(int i=0;i<H;++i) { vector<_Patch *> list; for(int j=0;j<W;++j) { _Patch temp(img,i,j); list.push_back(&temp); } patch->push_back(list); } 呼叫的程式碼 cout<<patch[0][0].position.x -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.16.199

06/22 02:30, , 1F
06/22 02:30, 1F

06/22 02:30, , 2F
當然 delete 就是另一個問題了...
06/22 02:30, 2F

06/22 02:35, , 3F
的確成功了! 不好意思可以問一下原因嗎?
06/22 02:35, 3F

06/22 02:44, , 4F
每次迴圈 temp 都會被回收掉, 所以存起來的都是垃圾值
06/22 02:44, 4F

06/22 02:46, , 5F
那在上一層的list有這樣的風險嗎
06/22 02:46, 5F

06/22 02:47, , 6F
在離開for迴圈之前,使用list都是安全的
06/22 02:47, 6F

06/22 03:29, , 7F
謝謝
06/22 03:29, 7F

06/22 10:18, , 8F
變數生命週期的問題。
06/22 10:18, 8F
文章代碼(AID): #1E0EA2hf (C_and_CPP)