Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 空输入的AddressSanitizer错误是如何产生的_C++ - Fatal编程技术网

C++ 空输入的AddressSanitizer错误是如何产生的

C++ 空输入的AddressSanitizer错误是如何产生的,c++,C++,以下代码计算两个相邻元件之间的最大气体。输入向量未排序 class Solution { public: int maximumGap(vector<int>& nums) { int max = 0; sort(nums.begin(), nums.end()); for(int i = 0; i < nums.size() -1; i++) { if(nums[i+1] > nums[i] + max) max = nu

以下代码计算两个相邻元件之间的最大气体。输入向量未排序

class Solution {
public:
int maximumGap(vector<int>& nums) {
    int max = 0;
    sort(nums.begin(), nums.end());
    for(int i = 0; i < nums.size() -1; i++) {
        if(nums[i+1] > nums[i] + max) max = nums[i+1] - nums[i];
    }
    return max;
}
};
可以通过包括以下内容来解决此问题:

if(nums.empty()) return 0;
只是想知道错误是怎么来的?我认为空输入也应该为原始代码输出0。

nums.size()
是无符号类型,因此当它为零时,
nums.size()-1
是一个巨大的正数,循环将运行

您可以将循环条件重写为:

i+1
nums.size()
是无符号类型,因此当它为零时,
nums.size()-1
是一个巨大的正数,循环将运行

您可以将循环条件重写为:

i+1
Try
std::cout到目前为止,代码看起来是正确的,所以它一定是您没有显示的其他内容。可能是函数调用?请尝试
std::cout到目前为止代码看起来是正确的,因此它一定是您没有显示的其他内容。也许是函数调用?
if(nums.empty()) return 0;