我遇到了一个令人讨厌的错误,我有一个循环
for (auto i = 0; i < vec.size() -1; ++i) {
//
}
vec是 emtpy std::vector
,因此vec.size() - 1在我的系统上评估为2^64
。
编写上述循环的正确方法是什么?
答案 0 :(得分:8)
size_t
是一个无符号类型因此问题,就这样做:
for (auto i = 0U; i + 1 < vec.size(); ++i)
已添加 0U
以使i
无符号(以避免出现警告),但在这种情况下我最好使用size_t
而不是auto
答案 1 :(得分:0)
编写上述循环的正确方法是什么?
保持循环原样,但添加一个if
- 仅当向量不为空时才分支到循环中的条件。