【发布时间】:2021-01-21 06:26:09
【问题描述】:
#include<iostream>
#include<vector>
using namespace std;
int count=0;
int checkDivisor(int d,int*ptr){
vector<int> v;
int temp=0;
for (int i = *ptr; ; i++)
{
for (int j = 1; j<=i; j++)
{
if(i%j==0){
v.push_back(j);
count++;
}
}
if (count>=4)
{
temp=i;
break;
}
else
{
v.clear();
}
}
for(int k=0;k<v.size();k++){
if ((v.at(k+1)-v.at(k))<=d)
{
return 0;
}
}
return temp;
}
int main(){
int t;
cin>>t;
while (t>0)
{
int d;
cin>>d;
int value=0;
int*point=&value;
int result=checkDivisor(d,point);
if(result==0){
*point++;
checkDivisor(d,point);
}
else{
cout<<checkDivisor(d,point)<<endl;
}
t--;
}
return 0;
}
这会在抛出 'std::out_of_range' 的实例后返回一个错误终止调用 what(): vector::_M_range_check: __n (即 1) >= this->size() (即 1)。 我要做的是返回一个数字,如果它有超过 3 个除数并且任何两个除数之间的差大于 d 请帮忙。
【问题讨论】:
-
k上升到size -1并且您正在尝试访问超出向量范围的k+1
标签: c++ vector error-handling runtime-error outofrangeexception