C++中vector使用問題01_size-1無限循環

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
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章