C++ 错误:未定义的行为管理器:死区信号
编译完CodeWars代码后,我一直收到相同的错误。我试着处理所有的警告,但在那之后它还是会突然出现。我检查了同样的问题,其中一些问题已经通过处理边界或内存分配得到了解决。但是,在这里,我无法理解代码中的实际错误在哪里 这是我的密码:C++ 错误:未定义的行为管理器:死区信号,c++,linux,C++,Linux,编译完CodeWars代码后,我一直收到相同的错误。我试着处理所有的警告,但在那之后它还是会突然出现。我检查了同样的问题,其中一些问题已经通过处理边界或内存分配得到了解决。但是,在这里,我无法理解代码中的实际错误在哪里 这是我的密码: #include <vector> #include <numeric> #include <iostream> #include <algorithm> using
#include <vector>
#include <numeric>
#include <iostream>
#include <algorithm>
using namespace std;
int maxSequence(const vector<int>& arr)
{
vector <unsigned long> temp2;
vector <unsigned long> temp1;
int result,sum_max = 0;
for(unsigned long i = 0; i < arr.size(); ++i)
{
sum_max = arr[i];
for(unsigned long j = i+1; j < arr.size(); ++j)
{
sum_max += arr[j];
temp1.push_back(sum_max);
}
result = *max_element(temp1.begin(), temp1.end());
temp1.clear();
temp2.push_back(result);
}
result = *max_element(temp2.begin(),temp2.end());
return result;
}
问题是我试图在没有检查所有必需条件的情况下提交代码。所以,我必须添加if语句,以防输入向量为空
if (arr.size() == 0){return 0;} or if(arr.empty()){return 0;}
请提供,以便我们可以运行此代码。地址清理器发现一些空指针被取消引用。想想当
i
为arr.size()-2
或更大时,*max_元素(temp1.begin(),temp1.end())
如果temp1
为空怎么办?@AlanBirtles我添加到代码中:if(!temp1.empty()){..}但它一直显示此错误消息。。。无论如何,谢谢你的建议,我没有注意到这同样适用于*max_元素(temp2.begin(),temp2.end())
。。。
if (arr.size() == 0){return 0;} or if(arr.empty()){return 0;}