为什么 vector.size()-1 给出垃圾值?

Why vector.size()-1 gives garbage value?

我试过运行这个代码

// vector::size
#include <iostream>
#include <vector>

int main ()
{
   std::vector<int> myints;
   std::cout << "size: " << myints.size() << '\n';
   std::cout << "size: " << myints.size()-1 << '\n';

 return 0; 
}

令人惊讶的是输出结果

0

garbage Value

应该是

0

-1

这是:code

myints.size()unsigned 类型:形式上是 std::vector<int>::size_type。从值为 0 的无符号类型中减去 1 将导致环绕效果,在您的情况下,到

std::numeric_limits<std::vector<int>::size_type>::max()

不会打印"garbage value":但是上面的数字,比2的大次方少1。