正在尝试解决Leetcode problem #448: Find All Numbers Disappeared in an Array。变量nums表示一个包含数字列表(包括消失的数字)的向量。
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抛出了一个错误:
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发布于 2021-02-23 08:40:53
输入向量nums可以为空。在使用空向量调用max_element函数时出现此问题。您可以通过向函数传递一个空向量(例如,[])来简单地测试代码。
最简单的解决方案是检查函数开头的输入向量nums是否为空。如下所示:
vector <int> temp, result;
if(nums.size() == 0) return result;
int max = *max_element(nums.begin(),nums.end());
...
...这将解决您在这里面临的运行时错误。
https://stackoverflow.com/questions/66319715
复制相似问题