2014-02-10 2 views
-6

Это простой код, который не работает для меня. Могу ли я не сохранять элементы вектора в цикле, как Matlab. i также нужно увеличить размер 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 [].

Смежные вопросы