看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Gcc 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) stl 問題(Question): for次數如何隨表單量更新 小弟我目前遇到一個瓶頸 EX: vector<double> list; for(int i=0;i<list.size();i++){ XX(副程式); } 問題在於進入for迴圈時list.size()就被限制住了,可是我的副程式會一直去更動 list.size()的大小 要用何種想法 才可以改善 list.size()可以每run一次副程式就更新 例如一開始進入for list.size()=5; 可是後來副程式經過運算 可能會變成 list.size()=9; 可是for迴圈不會跑9次 拜託高手解答了! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.101.251 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1452024111.A.8A5.html
grayStone: while 01/06 04:27
qas612820704: while loop? 01/06 04:42
lucky1lk: if? 01/06 08:00
LPH66: 你的 list 在哪?有傳入 XX() 裡嗎?怎麼傳的? 01/06 08:47
LPH66: 我有點想猜你用 pass by value 傳 list 進 XX 裡 01/06 08:47
LPH66: 這樣你在 XX 外面的 list 根本就沒動過, size() 自然不變 01/06 08:48
LPH66: 不然當 list 有被其他程式改變的可能時 size() 不該不變 01/06 08:49
LPH66: 如果真是這樣的話請改用 pass by reference 傳進去 XX 裡 01/06 08:49
Caesar08: 就算你的XX會呼叫list::erase,用<比較也可以才對 01/06 11:37
Caesar08: 應該是如同LPH66講的那樣吧 01/06 11:37
grayStone: 對耶應該是樓上說的list沒更新,不是要while 01/06 11:50
andrenvq57: i<list.size()每圈都會重算 01/06 12:35
謝謝大家 我是用 pass by reference 只是我自己耍笨了 要確保新增進來的 list 可以跑完 我又不小心在副程式 +erase 所以會導致一些剛進來的 list 跑不到 問題解決了 在副程式理面 抓住 要刪掉的點 出for在刪就OK了 ※ 編輯: kevinqazwsx (220.132.101.251), 01/06/2016 18:24:32