→ Hazukashiine: std::vector people(n, 0); 是指塞 n 個 0 的意思 01/19 22:48
→ Hazukashiine: 你想要的是 std::vector::reserve() 吧 (? 01/19 22:49
reserve() 是增加capacity用的嗎 ?
我是希望有一個size為n的空間可以使用
而且沒有要再增加size,所以應該也不用增加capacity
我以為我宣告std::vector<int> people(n, 0)的話
它應該會自動幫我增加size和capacity的大小到n才對
還是說我理解有誤
請指正我一下
※ 編輯: hth9494 (114.42.99.70), 01/19/2017 23:59:30
→ c910335: 前者L33會走出陣列所以得到錯誤的答案吧 01/20 00:55
推 ilikekotomi: A的理解是對的 但我覺得是錯在其它地方 01/20 01:30
→ ilikekotomi: nowPos是n-1的時候 nowPos++可能就導致vector錯誤了 01/20 01:33
→ ilikekotomi: 至於array沒錯應該是剛好對的 因為array改到超出範圍 01/20 01:33
→ ilikekotomi: 會改到他後面宣告的變數 01/20 01:34
推 ilikekotomi: 更正:不一定會改到後面宣告的變數 但不會讓程式當機 01/20 01:37
發現錯誤了,line 32 加個 nowPos %= n 就對了
的確是走到vector外,array會對真的是湊巧
感謝
※ 編輯: hth9494 (114.42.99.70), 01/20/2017 01:41:26
推 Ommm5566: 寫法習慣好多不好XD while的true換成真的判斷式比較好 01/20 08:46
推 Ommm5566: 既然要用stl容器 就盡量用iterator和容器的method 01/20 08:49
推 Ommm5566: 所以1f才會說用reserve 然後之後用push_back 01/20 08:51
謝謝大大指點
※ 編輯: hth9494 (114.42.99.70), 01/20/2017 09:58:43
推 steve1012: 是超界吧 然後static array沒檢查邊界 01/20 23:06
→ steve1012: 我覺得宣告沒什麼問題 01/20 23:07
→ steve1012: 並沒有一定要用reserve 吧 01/20 23:07
→ steve1012: 你下面的now pos 有可能變成n 01/20 23:08