您好,我是C ++的新手,我不得不填写代码。代码应该读取第一个输入中给出的多个值,然后它应该计算这些值之和的三倍。
我试过这样:
*/
不幸的是我最终陷入了分段错误...... 这是unfinished code
答案 0 :(得分:2)
vector <double> x; //here x has no space for elements
for (int i =0; i <n ; i++) cin >> x[i] ;
您没有分配内存来存储向量中的元素,因此x[i]
超出范围。请改用push_back()
。
double dummy;
for (int i =0; i <n ; i++)
{
cin >> dummy;
x.push_back(dummy);
}
答案 1 :(得分:1)
vector <double> x;
for (int i =0; i <n ; i++) cin >> x[i] ;
x
此处的大小为零,因此您将元素放在x
的无效位置,这很可能导致分段错误(向量不会对operator[]
进行任何绑定检查,所以你很幸运有错误。)
要么使vector
足够大:
vector <double> x(n);
或者让它处理动态大小调整:
vector <double> x;
for (int i =0; i <n ; i++) {
double d;
cin >> d ;
x.push_back(d);
}
答案 2 :(得分:1)
因为在第vector <double> x;
行中,您创建了vector
,其大小为0
。因此,向量x
中没有空格来容纳元素。
要更正您的代码,请执行以下任一操作:
vector <double> x;
更改为vector <double> x(n);
或 for (int i =0; i <n ; i++) cin >> x[i] ;
更改为double temp; for (int i =0; i <n ; i++) {cin >> temp; x.push_back(dummy);}