2014-02-10 142 views
-6

这是一个简单的代码,它不适用于我。 我不能像Matlab一样在循环中保存矢量的元素。我也 需要x在以后的规模增长。为什么我在此代码中出现分段错误

#include<stdio.h> 
#include <iostream> 
#include <cmath> 
#include <vector> 

using namespace std; 

int main() 
{ 
    int nxr,i; 
    double dxr,ll; 

    nxr = 2400; 
    lr = 0.6; 
    dxr = lr/nxr; 
    std::vector<double> x; 

    for (i=0;i<6;i++) 
    { 
     x[i]=(i+1)*dxr; 
    } 

} 

回答

1

越界访问这里:

x[i]=(i+1)*dxr; 

你的矢量大小为0则调用push_back或将其初始化到合适的尺寸:

x.push_back((i+1)*dxr); 

std::vector<double> x(6); 
1

std::vector<double> x;创建一个空向量,您必须使用push_back添加元素或预先分配元素 - std::vector<double> x(6);,然后使用operator []

相关问题