2014-02-10 140 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 []

相關問題