C++ 二维矢量到二维阵列的转换
我上次访问数组已经有一段时间了(我最近一直在处理向量),我需要将2D向量转换回2D数组,因为我使用的库接受类型为C++ 二维矢量到二维阵列的转换,c++,arrays,vector,C++,Arrays,Vector,我上次访问数组已经有一段时间了(我最近一直在处理向量),我需要将2D向量转换回2D数组,因为我使用的库接受类型为double array的参数,例如,该数组的访问器是foo[I][j] 这是我的密码: double** setupHMM(vector<vector<double> > &vals, int N, int M) { double** temp; temp = new double[N][M]; for(unsigned i=0; (i &
double array
的参数,例如,该数组的访问器是foo[I][j]
这是我的密码:
double** setupHMM(vector<vector<double> > &vals, int N, int M)
{
double** temp;
temp = new double[N][M];
for(unsigned i=0; (i < N); i++)
{
for(unsigned j=0; (j < M); j++)
{
temp[i][j] = vals[i][j];
}
}
}
然而,这会产生分段故障11
有谁能给我一些建议,或者,一个更好的方法来将向量转换成二维数组
谢谢你很接近。应该是:
double** setupHMM(vector<vector<double> > &vals, int N, int M)
{
double** temp;
temp = new double*[N];
for(unsigned i=0; (i < N); i++)
{
temp[i] = new double[M];
for(unsigned j=0; (j < M); j++)
{
temp[i][j] = vals[i][j];
}
}
}
double**setupHMM(向量和VAL,整数N,整数M)
{
双**温度;
温度=新双精度*[N];
for(无符号i=0;(i
更换
temp[i] = new double[N];
与
在第二个代码中,将其移出循环双指针(double**
)不能转换为二维数组
double** temp;
temp = new double[N][M]; //invalid
double** temp;
temp = new double(*)[M];
一个常见的误解是,由于一维数组衰减为指针,因此二维数组将衰减为双指针。事实并非如此。衰减只发生在一个指针上。它什么时候产生SEGFULT?谢谢你清理这个问题,我知道它很小:)
temp = new double*[N];
double** temp;
temp = new double[N][M]; //invalid
double** temp;
temp = new double(*)[M];