为什么 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。
我试过运行这个代码
// 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。