首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行时错误:引用绑定到类型为'int‘的空指针(Leetcode问题)

运行时错误:引用绑定到类型为'int‘的空指针(Leetcode问题)
EN

Stack Overflow用户
提问于 2021-02-23 00:37:38
回答 1查看 106关注 0票数 1

正在尝试解决Leetcode problem #448: Find All Numbers Disappeared in an Array。变量nums表示一个包含数字列表(包括消失的数字)的向量。

代码语言:javascript
复制
   vector <int> temp,result;
    int max = *max_element(nums.begin(),nums.end());
    for(int i=1;i<=max;i++)
        temp.push_back(i);
        
    for(int i=0;i<int(temp.size());i++)
    {
        if(count(nums.begin(),nums.end(),temp[i])==0)
        {
            result.push_back(temp[i]);
        }
    }
    return result;

似乎没有编译时错误。但是Runtime抛出了一个错误:

代码语言:javascript
复制
Line 811: Char 16: runtime error: reference binding to null pointer of type 'int' (stl_iterator.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_iterator.h:820:16
EN

回答 1

Stack Overflow用户

发布于 2021-02-23 08:40:53

输入向量nums可以为空。在使用空向量调用max_element函数时出现此问题。您可以通过向函数传递一个空向量(例如,[])来简单地测试代码。

最简单的解决方案是检查函数开头的输入向量nums是否为空。如下所示:

代码语言:javascript
复制
    vector <int> temp, result;
    if(nums.size() == 0) return result;
        
    int max = *max_element(nums.begin(),nums.end());
    ...
    ...

这将解决您在这里面临的运行时错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66319715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档