1 問題
在對一個vector進行循環處理時,例如排序,會經常這麼寫:
for (size_t i = 0; i < vec.size() - 1; i++) {
for (size_t j = i + 1; j < vec.size(); j++) {
// do something
}
}
這裏會出現無限循環。
2 分析
如果vec的元素數量爲0,那麼size_t類型的i=0-1
,在計算裏就變成了最大值,所以導致出現進入死循環的情況。
切記,不要犯這種低級錯誤。
3 解決辦法
去掉減1即可。或者加個判斷。
for (size_t i = 0; i < vec.size(); i++) {
for (size_t j = i + 1; j < vec.size(); j++) {
// do something
}
}