Re: [STL ] 請問List

看板C_and_CPP (C/C++)作者 (累人啊....)時間16年前 (2009/07/27 17:13), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串10/10 (看更多)
※ 引述《tyc5116 (累人啊....)》之銘言: : 後來我弄成類似這樣的樣子 : for (list<TP_Gra>::iterator Iter=Token_Place.begin(); : Iter!=Token_Place.end(); : ++Iter{} : : compile會過,但是執行的時候會顯示list iterator不相容 : : google的結果找到這個網頁 : : http://tinyurl.com/lx8r49 : : 上面有解釋了可能是list的實作非指標 : : (我不知道這樣的解釋對不對,反正看到std::list<foo>和std::list<foo>* list : 我知道他想表達什麼....) : : 但是他下面寫的解決方法我不是很了解,可以請有經驗的大大 : : 大概解釋一下他在說什麼,以及如何解決我目前的問題呢,謝謝 : ◆ From: 163.18.48.28 : → akasan:沒code沒人知道你在說啥阿? 07/27 17:05 恩~~補上我的class架構 class TP_Gra{ public: TP_Gra(int vID,Point vOrigin_Position); TP_Gra(); ~TP_Gra(); void Set_ID(int vID){ID=vID;} int Get_ID(){return ID;} void Set_Coodinate(Point Position); Point Get_Coodinate(){return Origin_Position;} private: int ID; Point Origin_Position; }; class Truckload_TP_Gra{ typedef list<TP_Gra> Contents; public: Truckload_TP_Gra(); Truckload_TP_Gra(TP_Gra one_TP); void add_TP(TP_Gra new_TP); Contents::iterator Begin(); Contents::iterator End(); TP_Gra Get_Last_OB(); TP_Gra Get_Now_OB(int vID); Contents Get_Load(); //仿函式 class Find_Ob_by_ID{ public: Find_Ob_by_ID (int val):_value(val){} bool operator()(TP_Gra& lhs){ return (lhs.Get_ID() == _value);} private: int _value; }; private: Contents Load; }; class Token_Place_Output{ typedef vector<_Point> Pos; public: void Set_TP_ID(int vID); int Get_TP_ID(); void Set_TP_Con_Trans_ID(int vID); int Get_TP_Con_Trans_ID(); void Set_Mid_Point(_Point P); void Set_Arc_Type(int type); int Get_Arc_Type(); void Clear(); private: int TP_ID; int Transition_ID; Pos Mid_Point; int Arc_Type; }; class Truckload_Con_TP_Out{ typedef list<Token_Place_Output> Contents; public: Truckload_Con_TP_Out(); Truckload_Con_TP_Out(Token_Place_Output one_Row); void add_Con_Data(Token_Place_Output new_Row); Token_Place_Output Get_Now_OB(int vTP_ID,int vTransition_ID); Token_Place_Output Get_First_OB(); Token_Place_Output Get_End_OB(); Contents Get_Load(); int Get_Count(); // 仿函式 class Find_Ob_by_ID{ public: Find_Ob_by_ID (int vTP_ID,int vTransition_ID): TP_ID(vTP_ID), Transition_ID(vTransition_ID) {} bool operator()(Token_Place_Output& lhs){ return (lhs.Get_TP_ID() == TP_ID) && (lhs.Get_TP_Con_Trans_ID()==Transition_ID); } private: int TP_ID; int Transition_ID; }; private: Contents Load; }; 然後在主程式打了這行 for (list<Token_Place_Output>::iterator i=TPOut.Get_Load().begin();i!=TPOut.Get_Load().end();i++){ } //這個迴圈compile會過,執行時則會出問題 之前cloud大曾說iterator不要暴露在外,不過目前我只想的到這樣的寫法@@ 麻煩有經驗的大大說明iterator不相容的問題該怎麼解決,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.18.48.28 ※ 編輯: tyc5116 來自: 163.18.48.28 (07/27 17:20)

07/27 18:37, , 1F
為何一定要在主程式做物件的拜訪..讓class提供功能不是很好?
07/27 18:37, 1F

07/28 15:02, , 2F
恩....大概知道您的意思了....
07/28 15:02, 2F
文章代碼(AID): #1ARM-n9G (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
0
1
完整討論串 (本文為第 10 之 10 篇):
0
2
0
1
2
6
1
1
2
9
2
10
2
7
2
3
1
3
文章代碼(AID): #1ARM-n9G (C_and_CPP)