看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-C++ 問題(Question): 自己創了一個 class Agent 其中的 data member 沒有 pointer 另創了一個 class CS 其中的 data member 想要含有: 1. vector<Agent> member 2. vector< vector<Agent*> > structure 而 structure 當中的 vector<Agent*> 中的 Agent* 含的位置 就是 member 裡的 Agent 地址 請問要怎麼達成呢?? 程式碼(Code): class CS //brief for coalition structure { public: CS(int); ~CS(); .... private: int size; vector< Agent > member; vector< vector<Agent*> > structure; // { {2,3},{1},{4,5} } }; CS::CS(int n) { vector<Agent*> onlyone; //初始狀態 structure 只含一個 vector for(int i=1;i<=n;i++){ Agent agent(i); //初始化 agent 的 id member.push_back(agent); onlyone.push_back( &(member.at(i-1)) ); //應該是這行有問題 } structure.push_back(onlyone); size = n; cout<<member[0].id()<<endl; //印出 1 cout<<onlyone[0]->id()<<endl; //印出亂數 cout<<structure[0].at(0)->id()<<endl; //印出亂數 } 而且還得確保 constructor 結束之後 member 和 structure 的內容有正確對應到才行 應該怎麼修正呢 先謝謝大家了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.229.36
akasan:vector 當容量不夠時會長大, 然後去要一塊新的記憶體 03/15 21:23
akasan:接著把舊的東西搬過去, 原本的記憶體就丟了 03/15 21:24
akasan:最簡單的解法是 structure 裡面就存 index 吧 03/15 21:25
jackwei:structure裡面直接存index的話 03/15 21:30
jackwei:那我修改member後 structure裡面的東西怎麼跟著改呢? 03/15 21:31
jackwei:不過如果是 structure改成 vector<vector<int>>好像也可 03/15 21:32
jackwei:但還是好奇有沒有pointer的做法 感謝樓上 03/15 21:32
akasan:把 member 換成 list 或著是 member 裡面也存 pointer 03/15 21:34
loveme00835:可以說說你這樣做的動機嗎? 03/15 23:44
johnhmj:容器像vector這個,不適合放指標。 03/16 00:00
softwind:instance or pointer/reference放一個就好 你這樣重複指 03/16 00:41
softwind:有甚麼特別用意嗎??? 03/16 00:41
avhacker:都存 shared_ptr 就好啦 03/16 01:56
Ebergies:全部都像樓上那樣或者直接用 pointer 就好啦... 03/16 10:22
jackwei:感謝回應! shared_ptr 我第一次聽到 會再去查查怎麼用 03/16 13:01