因为类型转换导致的一个小问题
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 会变得很大,导致后面的下标运算符越界。
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 会变得很大,导致后面的下标运算符越界。