分段故障(堆芯倾倒) 我有点新的C++,我必须填写一个代码。代码应该读取第一个输入中给定的值,然后计算这些值之和的三倍

分段故障(堆芯倾倒) 我有点新的C++,我必须填写一个代码。代码应该读取第一个输入中给定的值,然后计算这些值之和的三倍,c++,segmentation-fault,C++,Segmentation Fault,我这样试过: #include <iostream> #include <vector> using namespace std; int main(int argc, char* argv[]) { if (argc != 2) { return 1; } int n = atoi(argv[1]); vector<double> x; for (int i = 0; i < n; i++)

我这样试过:

#include <iostream>
#include <vector>
using namespace std;

int main(int argc, char* argv[])
{
    if (argc != 2) {
        return 1;
    }
    int n = atoi(argv[1]);
    vector<double> x;
    for (int i = 0; i < n; i++)
        cin >> x[i];
    double v = 0;
    for (int i = 0; i < n; i++)
        v = 3 * x[i];
    cout << v << endl;
    return 0;
}
不幸的是,我最终陷入了分割错误。。。 这是你的电话号码

或者让它处理动态大小调整:

vector <double> x;
for (int i =0; i <n ; i++) {
    double d;
    cin >> d ;
    x.push_back(d);
}
因为直线向量x;,您已经创建了一个大小为0的向量。所以向量x中没有空间来容纳元素

要更正代码,请执行以下任一操作:

改变线向量x;到矢量xn;或 更改int i=0的行;i>x[i];使温度加倍;对于int i=0;i>温度;x、 推回虚拟;}
你在索引一个向量超出界限,考虑用大小Ni构造它,认为你的答案是正确的,它会解决分割错误,但是它不适合于设置代码:
double dummy;
for (int i =0; i <n ; i++)
{ 
    cin >> dummy;
    x.push_back(dummy);
}
vector <double> x;
for (int i =0; i <n ; i++) cin >> x[i] ;
vector <double> x(n);
vector <double> x;
for (int i =0; i <n ; i++) {
    double d;
    cin >> d ;
    x.push_back(d);
}