自从我上次访问数组以来已经有一段时间了(最近我一直在使用 vector ),由于我使用的库,我需要将2D vector 转换回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];
    }
 }
}

有了这个,我得到error: ‘M’ cannot appear in a constant-expression
我也尝试了以下方法:
double** setupHMM(vector<vector<double> > &vals, int N, int M)
{
   double** temp;

   for(unsigned i=0; (i < N); i++)
   {
      temp[i] = new double[N];
      for(unsigned j=0; (j < M); j++)
      {
          temp[j] = new double[M];
          temp[i][j] = vals[i][j];
      }
   }
 }

但是,这会产生段错误11。

任何人都可以提出任何建议,还是将 vector 转换为2D数组的更好方法。

谢谢

最佳答案

你近了。它应该是:

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

关于c++ - 将2D vector 转换为2D数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15295677/

10-13 08:03