c++ vector为空,size() - 1的坑
vector的size()函数返回的是一个无符号整数,当size() == 0,再减1,会导致溢出,从而使数据变大如代码:int main(){vector<int> arr;cout<<arr.size()<<endl;// 输出0cout<<arr.size() - 1<<endl;// 输出429496729}解决方法如下:int
·
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);
}
}
更多推荐
所有评论(0)