vector的size()函数返回的是一个无符号整数,当size() == 0,再减1,会导致溢出,从而使数据变大
如代码:
int main()
{
vector<int> arr;
cout<<arr.size()<<endl; // 输出 0
cout<<arr.size() - 1<<endl; // 输出 429496729
}
解决方法如下:
int main()
{
vector<int> arr;
cout<<arr.size()<<endl;// 输出 0
int a = arr.size() - 1; // 赋值给有符号整数
cout<< a <<endl; // 输出 -1
// /如果是做大小判断的话
int index = - 1;
if(index + 1 < arr.size()){ //把 - 1 移到另一端即可
arr[++index] = 1;
}else{
++index;
arr.emplace_back(1);
}
}