SIGABRT Ошибка при возврате вектора из функции в C ++ - PullRequest
0 голосов
/ 27 сентября 2019

У меня ошибка выполнения при возврате вектора из функции в C ++

Это код:

vector<double> calcularCorrelaciones(Data posiciones, Data velocidades, Config config, int bins)
{
    double paso = sqrt(2*config.Lbox*config.Lbox)/bins;

    vector<double> res(bins,0);
    vector<double> cum(bins,0);

    for (int i=0; i<config.cantPart; i++){
        double xi = posiciones.x[i];
        double yi = posiciones.y[i];
        double vxi = velocidades.x[i];
        double vyi = velocidades.y[i];
        for (int j=i; j<config.cantPart; j++){
            double xj = posiciones.x[j];
            double yj = posiciones.y[j];
            double vxj = velocidades.x[j];
            double vyj = velocidades.y[j];
            double dist = PBC_distance(xi,yi,xj,yj,config.L);
            int lugar = floor(dist/paso);
            res[lugar] += vxi*vxj+vyi*vyj;
            cum[lugar]++;
        }
    }
    for (int i = config.cantPart; i >= 0; i--){
        if (cum[i]){
            res[i] = res[i]/cum[i];
            cum[i] = cum[i]/cum[0];
        }
    }
    for (int i = config.cantPart; i >= 0; i--){
        res[i] = res[i]/res[0];
    }

    return res;
}

int main(int argc, char**argv)
{

    // Genero el nombre del archivo de configuracio a leer
    int num = atoi(argv[2])+atoi(argv[1]);
    Config config(num);

    config.levantarConfig();
    Data posiciones = levantarArchivo(config,"POS",0,0);
    Data velocidades = levantarArchivo(config,"VEL",0,0);

    vector<double> res;
    res.reserve(100);
    res = calcularCorrelaciones(posiciones,velocidades,config,100);

}  

В то время как отладка в CodeBlocks я нашел функцию calcularCorrelaciones работает какочарование, но у меня возникли проблемы с возвратом стоимости.Проблема в последней строке кода, когда возвращается вектор.

...