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

时间:2018-02-06 15:29:31

标签: c++ debugging vector issue-tracking

我曾尝试过运行此代码

// 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

     

垃圾值

应该是

  

0

     

-1

这是:code

1 个答案:

答案 0 :(得分:6)

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

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

打印出“垃圾值”:但是上面的数字会比2的大功率小一个。