看板 EE_DSnP 關於我們 聯絡資訊
請問一下 在adtTest.h中有deleteRandom這個function 用來做 adtd -r xxx這件事 void deleteRandom(size_t repeat = 1) { size_t s = _container.size(); for (size_t i = 0; i < repeat; ++i) { size_t pos = rnGen(s); if (_container.erase(getPos(pos))) --s; } } 但是我在跑的時候一直會掛掉 後來cout測了一下 repeat應該就是我要random delete的次數 而s是我現在list中的element個數 可是如果s比repeat小的話 (list中的element個數比要delete的個數少) 因為一直做--s 所以當s撿到變成0後 再減一次會變成一個超大的數字 也造成我pos會變成超大的數字(pos = rnGen(s)) 然後程式就停在那邊了 應該是因為這個pos根本不知道是什麼的關係 所以在dlist.h中的erase(iterator pos)就沒辦法做下去 請問該怎麼處理repeat次數比s要大的情況呢 謝謝!! (--s應該是為了要每次都產生不同的random number seed吧?) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.161.50.247 ※ 編輯: WSzc 來自: 118.161.50.247 (05/17 18:53)
WSzc:喔是我erase時 沒有特別處理node是_head的情況 解決了 05/17 18:54