看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 問題(Question): A.h ----------------------- class A { int a; vector<int> b; }; vector<A> *root; ----------------------- 以前我用過類似A.h的寫法,但當時是 vector<A> root; 如果要提取A的東西,就寫 vector<A>::iterator it = root.begin(); (*it).a (*it).b.size() 等等 但今天試用 *root, vector<A>::iterator it = (*root).begin(); (*it).a 卻一直 Segmen fault 還亂試(**it).a、(*it)->a等等 XD 但最後還是改回以前的寫法,想請教板友iterator為什麼不能這樣用? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.242.2.197
james732:你的 root 只是個指標,沒有配置空間就不能用 05/21 01:37
diabloevagto:嘗試看看BOOST 05/22 02:52
angleevil:你的root是不是要先指向某個物件阿?總覺得第一個用法對 05/23 16:23
angleevil:第二個卻有說不出來的怪異 05/23 16:23
angleevil:http://pastie.org/1960408 留給其他高手解決吧 05/23 17:35
angleevil:= =我也不太會解決,雖然前輩解釋過,但是我只知道大概理 05/23 17:36
angleevil:由 05/23 17:36
angleevil:vector<A>::iterator it = (*root).begin();這樣做ok 05/23 18:01
angleevil:但是root是空的vector(size為0),類似操作一個null or 05/23 18:03
angleevil:未知的空間,因此你read or assign的操作都是錯的. 05/23 18:04
angleevil:算是未定意的行為吧!真感謝你讓我統整觀念 05/23 18:05
angleevil:不可以提取(dereference)不知指向何方的指標<=13戒 05/23 18:07