9

私は を持っているvector<vector<double>ので、値の表 (マトリックス) があります。列には惑星の位置と速度が含まれているため、行には同じ惑星のデータが格納されます。valarray数学演算が必要なため、行を a に変換したい。次に、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 に代入する際にエラーが発生します (明らかに許可されていません)。

私がやろうとしたことを簡単な方法で達成する方法はありますか?

4

1 に答える 1

18

ベクトルから valarray を作成するには:

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

データをベクトルに書き戻すには:

corps_tmp[i].assign(std::begin(corpX), std::end(corpX));
于 2012-11-29T21:28:14.547 に答える