C++ 二维矢量到二维阵列的转换

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 &

我上次访问数组已经有一段时间了(我最近一直在处理向量),我需要将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 < 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];