[問題] 動態陣列大小的變更成本

看板C_and_CPP作者 (信)時間12年前 (2013/04/11 04:09), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 程式碼: http://codepad.org/jWNosIeK 問題: 寫了兩個樂透數字取得的方法 第一個是採用動態陣列 想避免產生重複隨機值 第二個就是一般while 取隨機作比對 CPU為E3-1230V2 (4C8T) 同樣跑1萬次的結果 第二個的時間 只有0.002秒 重複率約3200 / 10000*6 約1/18次 而採用動態陣列的方法每取一個值就會作erase 移除 結果處理時間 0.237秒 差了100倍 想請問有沒有更好的方法可以避免隨機重複 或者降低 陣列改變的成本 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.240.226.120

04/11 06:02, , 1F

04/11 06:03, , 2F
如果有動態配置記憶體的話,比較慢是正常的。
04/11 06:03, 2F

04/11 06:14, , 3F
上面的有誤,重貼 http://codepad.org/qTzZsFlR
04/11 06:14, 3F

04/11 10:43, , 4F
既然最大大小知道,第一個可以refNum.reserve(NUMS)
04/11 10:43, 4F

04/11 13:24, , 5F
增大時會做搬移動作,如果不希望這樣就一開始就預設
04/11 13:24, 5F

04/11 13:24, , 6F
大些,減少增大次數
04/11 13:24, 6F
文章代碼(AID): #1HPSRrDq (C_and_CPP)