-5

我有一个一维向量(Vp_cpp),我想转换为二维向量(声明为 Vp_2D)。但是,我的实现有点不正确,因为它无法到达“从内部循环出来”这一行。

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];

否则,您只会多次重新分配一个值。

于 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 回答