Re: [STL ] 關於vector存取元素

看板C_and_CPP (C/C++)作者 (累人啊....)時間16年前 (2009/07/29 15:37), 編輯推噓3(305)
留言8則, 3人參與, 最新討論串2/3 (看更多)
不好意思,還是一樣的問題@@ 以為解決了,結果其實並沒有 這一次我把他簡化了,我寫成一個類似的小程式,麻煩有經驗的大大 幫忙看一下問題是出在哪裡 我新建了一個類別 class aaa{ public: void SetV(int val){v.push_back(val);} vector<int> GetV(){return v;} void VClear(){v.clear();} private: vector<int> v; }; 我打算做link list,list中有許多物件,物件內有vector 在輸作資料後,最後要將輸入的資料讀取出來 跟之前一下,compiler時會過,但執行時則會出錯 int count=0; int num=0; aaa a; for (int i=0;i<3;++i) a.SetV(i); list<aaa> L; L.push_back(a); a.VClear(); for (int i=10;i>7;--i) a.SetV(i); L.push_back(a); for (list<aaa>::iterator i=L.begin(); i!=L.end(); ++i){ MessageBox::Show("count="+(++count).ToString()); for(vector<int>::iterator j=i->GetV().begin();j!=i->GetV().end();++j){ num=*j; MessageBox::Show(num.ToString()); } } 執行時會出現錯誤視窗,顯示的exception是vector iterator incompitable 所以我想問題應該就出在這個地方吧,請問我該怎麼修改呢,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.18.48.28

07/29 15:51, , 1F
const vector<int>& GetV(){return v;}
07/29 15:51, 1F

07/29 15:51, , 2F
vector<int>::const_iterator j=i->GetV().begin().....
07/29 15:51, 2F

07/29 15:51, , 3F
這樣子呢?
07/29 15:51, 3F

07/29 15:54, , 4F
一樣有錯
07/29 15:54, 4F

07/29 17:02, , 5F
我曾試過,class aaa全部都是public,屬性可直接使用
07/29 17:02, 5F

07/29 17:03, , 6F
不用透過成員函數,這樣就可以成功執行,不知道為什麼..
07/29 17:03, 6F

07/29 18:50, , 7F
C# : 這個STL我消化不良喔
07/29 18:50, 7F

07/29 18:54, , 8F
vector<int>& GetV(){return v;} 沒事我開玩笑的
07/29 18:54, 8F
文章代碼(AID): #1AR_nChL (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AR_nChL (C_and_CPP)