[問題] for次數如何更新?

看板C_and_CPP作者 (Irean)時間8年前 (2016/01/06 04:01), 8年前編輯推噓2(2010)
留言12則, 6人參與, 最新討論串1/1
開發平台(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

01/06 04:27, , 1F
while
01/06 04:27, 1F

01/06 04:42, , 2F
while loop?
01/06 04:42, 2F

01/06 08:00, , 3F
if?
01/06 08:00, 3F

01/06 08:47, , 4F
你的 list 在哪?有傳入 XX() 裡嗎?怎麼傳的?
01/06 08:47, 4F

01/06 08:47, , 5F
我有點想猜你用 pass by value 傳 list 進 XX 裡
01/06 08:47, 5F

01/06 08:48, , 6F
這樣你在 XX 外面的 list 根本就沒動過, size() 自然不變
01/06 08:48, 6F

01/06 08:49, , 7F
不然當 list 有被其他程式改變的可能時 size() 不該不變
01/06 08:49, 7F

01/06 08:49, , 8F
如果真是這樣的話請改用 pass by reference 傳進去 XX 裡
01/06 08:49, 8F

01/06 11:37, , 9F
就算你的XX會呼叫list::erase,用<比較也可以才對
01/06 11:37, 9F

01/06 11:37, , 10F
應該是如同LPH66講的那樣吧
01/06 11:37, 10F

01/06 11:50, , 11F
對耶應該是樓上說的list沒更新,不是要while
01/06 11:50, 11F

01/06 12:35, , 12F
i<list.size()每圈都會重算
01/06 12:35, 12F
謝謝大家 我是用 pass by reference 只是我自己耍笨了 要確保新增進來的 list 可以跑完 我又不小心在副程式 +erase 所以會導致一些剛進來的 list 跑不到 問題解決了 在副程式理面 抓住 要刪掉的點 出for在刪就OK了 ※ 編輯: kevinqazwsx (220.132.101.251), 01/06/2016 18:24:32
文章代碼(AID): #1MZ24lYb (C_and_CPP)