首页 > 解决方案 > 引用绑定到“int”类型的空指针 (stl_iterator.h)

问题描述

有人可以帮我解决这个错误吗

第 786 行:字符 17:运行时错误:引用绑定到“int”类型的空指针 (stl_iterator.h)

class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {
        vector<int>result;
        sort(nums.begin(),nums.end());
        int p=1;
        int minel=*min_element(nums.begin(),nums.end());
        int maxa=*max_element(nums.begin(),nums.end());
        for(int64_t i=minel;i<=maxa;i++)
        {
            int c=count(nums.begin(),nums.end(),i);
            if(c==0)
            {
                result.push_back(i);
            }
        }
        return result;
    }
};

标签: c++c++11vector

解决方案


事情可能会失败,当你使用可能失败的东西时,你应该检查它是否失败。特别是std::max_element回报...

指向范围 [first, last) 中最大元素的迭代器。如果范围内的多个元素等价于最大元素,则将迭代器返回到第一个这样的元素。如果范围为空,则返回最后一个。

你应该改变这个

int minel=*min_element(nums.begin(),nums.end());

auto it = min_element(nums.begin(),nums.end());
if (it != nums.end()) {
    auto minel = *it;
}  else {
    // do not use it
}

或者nums在函数开始时检查一次是否为空。该代码似乎用于在线竞赛。检查要求,如果空输入是有效输入,则需要处理它。如果空向量不是您必须处理的要求,则您可能在代码中存在未显示的错误。


推荐阅读