从size_t减去导致大的正数

use*_*652 1 c++ size-t

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

for (auto i = 0; i < vec.size() -1; ++i) {
  //
}
Run Code Online (Sandbox Code Playgroud)

由于vec是一个emtpy std::vector,因此vec.size() - -1评估2^64我的系统.

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

Sla*_*ica 8

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

for (auto i = 0U; i + 1 < vec.size(); ++i) 
Run Code Online (Sandbox Code Playgroud)

0U加入使i无符号(避免警告),但我会更好地利用size_t的istead auto在这种情况下,