Re: [問題] vector初始化的問題

看板C_and_CPP (C/C++)作者 (Victor)時間16年前 (2009/02/02 13:15), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《realmojo (蟹老闆)》之銘言: : #include <vector> : #include <iostream> : using namespace std; : class Bin; : vector<Bin> *v; : struct Bin { : int *glass; : Bin():glass(new int(0)) {} : }; : int main() { : v = new vector<Bin>(2); : *(v->at(0).glass) = 9; : cout << *(v->at(1).glass) << endl; : } : 為什麼output會是9而不是0? 我用debugger下去跑發現你的兩個Bin的glass都被改成9 原因在於似乎容器只會建構(construct)一個Bin 然後剩的都用copy的方式將它填滿整個陣列 因為是copy的方式 而你沒有寫復製的函數,它預設就是binary的方式一對一copy 導至vector裡的Bin指標都是指向同一個int的位置 改寫或讀取當然就是都指向同一個位置 會全都一樣 你可以用debugger下去跑跑看 -- 哇咧咧 創意投票系統 http://walele.com 易記學 程式設計教學 http://ez2learn.com/ 易記學 程式設計討論區 http://forum.ez2learn.com VICTOR's 個人Blog http://blog.ez2learn.com/ 財報分析王 http://victorlin.serveftp.org/stock/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.113.156.83

02/02 15:49, , 1F
thanks!
02/02 15:49, 1F
文章代碼(AID): #19Xe5O_m (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19Xe5O_m (C_and_CPP)