作者tyc5116 (累人啊....)
看板C_and_CPP
標題Re: [STL ] 關於vector存取元素
時間Wed Jul 29 15:37:45 2009
不好意思,還是一樣的問題@@
以為解決了,結果其實並沒有
這一次我把他簡化了,我寫成一個類似的小程式,麻煩有經驗的大大
幫忙看一下問題是出在哪裡
我新建了一個類別
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
1F:推 suhorng:const vector<int>& GetV(){return v;} 07/29 15:51
2F:→ suhorng:vector<int>::const_iterator j=i->GetV().begin()..... 07/29 15:51
3F:→ suhorng:這樣子呢? 07/29 15:51
4F:→ tyc5116:一樣有錯 07/29 15:54
5F:→ tyc5116:我曾試過,class aaa全部都是public,屬性可直接使用 07/29 17:02
6F:→ tyc5116:不用透過成員函數,這樣就可以成功執行,不知道為什麼.. 07/29 17:03
7F:推 chrisdar:C# : 這個STL我消化不良喔 07/29 18:50
8F:推 chrisdar:vector<int>& GetV(){return v;} 沒事我開玩笑的 07/29 18:54