分割错误 (SIGSEGV) 获取数据作为结构向量中的输入时



分段错误(SIGSEGV)。链接到代码由于输入用于存储结构向量的值,该代码给出了分割错误错误。

#include<bits/stdc++.h>
using namespace std;
struct s{
    int a;
    int d;
};
int main(){
        int n;
        cin>>n;
        vector<s> v;
        for(int i=0;i<n;i++){
             cin>>v[i].a;
        }
        for(int i=0;i<n;i++){
             cin>>v[i].d;
        }
    return 0;
}

输入为:

6
900  940 950  1100 1500 1800
910 1200 1120 1130 1900 2000

问题是您正在访问其边界之外的向量。向量为空,但v[i]尝试访问不存在的向量元素。因此,程序的行为是未定义的。

我怀疑您可能打算使用将元素计数作为参数的向量构造函数。

这是有效的代码。我在构造向量时指定它的大小。

    vector<s> v(n);

编译代码:

#include<bits/stdc++.h>
using namespace std;
struct s{
    int a;
    int d;
};
int main(){
        int n;
        cin>>n;
        vector<s> v(n);
        for(int i=0;i<n;i++){
             cin>>v[i].a;
        }
        for(int i=0;i<n;i++){
             cin>>v[i].d;
        }
    return 0;
}

最新更新