在C++中将1D矢量转换为2D矢量

Converting 1D vector into 2D in C++

本文关键字:转换 2D 矢量 C++ 中将 1D      更新时间:2023-10-16

我有一个1D向量(Vp_cpp),我想转换为2D向量(声明为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;
}

可能出了什么问题?

这一行对我来说似乎错了:

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

我会写:

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

其中CCD_ 1用于在CCD_。应在for (int j, ...循环之前将其初始化为0。

更改行

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

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

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

Vp_2D[i_cpp][i_cpp2] = Vp_cpp[i_cpp2];每次循环通过此指令时,它都会将值重置为Vp_2D[i_cpp][i_cpp2](因为循环内i_cppi_cpp2上没有可见的赋值)。

您应该将其更改为Vp_2D[j][k]