因为类型转换导致的一个小问题

1 void func(vector<int> &nums)
2 {
3     for (int i = 0; i < nums.size()-1; ++i)
4         if (nums[i] == nums[i+1])
5             break;
6 }

这个代码,在 nums 是空数组时会出现 SF,因为 nums.size() 返回的是 size_type,这个类型是无符号的,因此 nums.size() - 1 会变得很大,导致后面的下标运算符越界。

 

posted on 2017-12-23 20:06  daghlny  阅读(81)  评论(0编辑  收藏  举报

导航