2 维数组初始化列表异常

2 Dimensional array initializer list exception

[异常]

大家好, 我正在尝试为二维数组创建一个 initializer_list 构造函数。 有什么帮助吗? .....................

    Matrix(int row,int col,const std::initializer_list<double>& list)
{
    rows = row;
    cols = col;
    std::initializer_list<double>::iterator it; 
    arr = new double* [rows];
    /*double* ptr = arr[k];*/
    int n = 0;
    for (it = list.begin(); it != list.end(); ++it)
    {
        int k = 0;
        if (n == cols)
        {
            k++;
            n = 0;
        }
        n++;
        arr[k][n] = *it;
    }
}

您没有分配足够的内存。另请注意,您可能不想在每次迭代中都重置 k,如果您想在整个容器上执行某些操作,则有基于范围的循环:

//correct allocation
int n = 0;
int k = 0;
for (auto const& number : list) {
  arr[k][n] = number;
  n++;
  if (n == col) {
    n = 0;
    ++k;
  }
}

也不需要在需要变量之前声明它们。对于迭代器,使用 for(auto it = list.begin(); it != list.end(); ++it)。 当它们是函数参数并且 rowcol 没有类型时,也不需要临时变量。