我经常遇到分段故障,即使我知道它是因为访问受限内存而发生的,我似乎也不知道如何纠正它.当我调用另一个函数时,我经常遇到它.
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
long int xyz(int n)
{
vector<int> a;
vector<int> b;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
cin>>b[i];
}
long int sum=0;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
sum=sum+((a[j]-a[i])*max(b[i],b[j]));
}
}
return sum;
}
int main()
{
int n;
long int final;
cin>>n;
for(int i=0;i<n;i++)
{ int n;
cin>>n;
final=xyz(n);
cout<<final<<endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下,你有没有大小的两个向量a和b.
它们默认构造为零大小.
vector<int> a(n);给你n个元素.做一个类似的改变b,一切都应该好.
[]用于访问其范围之外的向量的元素的行为是未定义的.