-5

1D ベクトル (Vp_cpp) があり、2D ベクトル (Vp_2D として宣言) に変換したい。ただし、「Out from inner loop」という行に到達できなかったため、私の実装は多少正しくありません。

std::vector<double> Vp_cpp;
std::vector<std::vector<double> > Vp_2D;

Vp_2D.resize(N_cpp);
for (int i = 0; i < N_cpp; ++i)
    Vp_2D[i].resize(N_cpp);
for (int j = 0; j < N_cpp; j++)
    for (int k = 0; k < N_cpp; k++)
{
    cout << "Beginning inner loop" << endl;
    Vp_2D[i_cpp][i_cpp2] = Vp_cpp[i_cpp2]; 
    cout << "Out from inner loop" << endl;
}

何が間違っている可能性がありますか?

4

3 に答える 3

2

この行は私には間違っているようです:

Vp_2D[i_cpp][i_cpp2] = Vp_cpp[i_cpp2]; 

私は次のように書きます。

Vp_2D[j][k] = Vp_cpp[i++];

whereiを反復処理するために使用されVp_cppます。for (int j, ...ループの前に 0 に初期化する必要があります。

于 2012-08-23T14:16:02.393 に答える
2

行を変更する

Vp_2D[i_cpp][i_cpp2] = Vp_cpp[i_cpp2];

Vp_2D[j][k] = Vp_cpp[(j * N_cpp) + k];

そうしないと、1 つの値を何度も再割り当てすることになります。

于 2012-08-23T14:19:06.520 に答える
1

Vp_2D[i_cpp][i_cpp2] = Vp_cpp[i_cpp2];ループがこの命令を通過するたびに、値をリセットし続けます(ループ上およびループ内にVp_2D[i_cpp][i_cpp2]目に見える割り当てがないため)。i_cppi_cpp2

に変更する必要がありますVp_2D[j][k]

于 2012-08-23T14:15:10.727 に答える