从 size_t 中减去得到大的正数

subtraction from size_t results in large positive number

我只是 运行 遇到了一个令人讨厌的错误,其中有一个循环

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

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

上面循环的正确写法是什么?

size_t 是一个无符号类型,因此出现了问题,只需这样做:

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

0U 使 i 未签名(以避免警告),但在这种情况下我最好使用 size_t 而不是 auto

What's the correct way of writing the above loop?

保持循环不变,但添加一个 if 条件,仅当向量不为空时才进入循环。