Назначить std::vector для std::valarray

У меня есть vector<vector<double>Итак, таблица (матрица) значений. Столбцы содержат положение и скорость планеты, поэтому в строках хранятся данные одной и той же планеты. Я хочу превратить строку в valarray потому что мне нужны математические операции. Затем я хочу сохранить valarrays (планеты) в векторе. Я пытался так:

vector<vector<double>> corps_tmp=configFile.get_corps(); // The function returns a vector<vector<double>>

    valarray<double> corpX;
    for (int i(0); i < corps_tmp.size(); i++) {
        corpX = corps_tmp[i]; // I want to save the first row of the vector<vector<double>> on the valarray
        corps.push_back(corpX); // I want to ''add'' the valarray to a vector.
        corpX = 0;
    }

Этот код не работает, и я получаю сообщение об ошибке при присвоении вектора для valarray (очевидно, не допускается).

Есть ли способ достичь простым способом, что я пытался сделать?

1 ответ

Решение

Чтобы создать valarray из вектора:

std:valarray<double> corpX(corps_tmp[i].data(), corps_tmp[i].size());

Чтобы записать данные обратно в вектор:

corps_tmp[i].assign(std::begin(corpX), std::end(corpX));
Другие вопросы по тегам