从size_t减去导致大的正数

时间:2016-11-30 16:46:39

标签: c++ size-t

我遇到了一个令人讨厌的错误,我有一个循环

for (auto i = 0; i < vec.size() -1; ++i) {
  //
}

vec是 emtpy std::vector,因此vec.size() - 1在我的系统上评估为2^64

编写上述循环的正确方法是什么?

2 个答案:

答案 0 :(得分:8)

size_t是一个无符号类型因此问题,就这样做:

for (auto i = 0U; i + 1 < vec.size(); ++i) 
已添加

0U以使i无符号(以避免出现警告),但在这种情况下我最好使用size_t而不是auto

答案 1 :(得分:0)

  

编写上述循环的正确方法是什么?

保持循环原样,但添加一个if - 仅当向量不为空时才分支到循环中的条件。

相关问题