相关疑难解决方法(0)

有没有办法在C++ 11中传递嵌套的初始化列表来构建2D矩阵?

想象一下,你有一个简单的矩阵类

template <typename T = double>
class Matrix {

  T* data;
  size_t row, col;

public:

  Matrix(size_t m, size_t n) : row(m), col(n), data(new T[m*n]) {}
  //...       

  friend std::ostream& operator<<(std::ostream& os, const Matrix& m) {
    for (int i=0; i<m.row; ++i) {
      for (int j=0; j<m.col; ++j)
        os<<" "<<m.data[i + j*m.row];
      os<<endl;
    }
    return os;
  }
};      
Run Code Online (Sandbox Code Playgroud)

有没有办法用初始化列表初始化这个矩阵?我的意思是从初始化列表中获取矩阵和元素的大小.类似下面的代码:

Matrix m = { {1., 3., 4.}, {2., 6, 2.}};
Run Code Online (Sandbox Code Playgroud)

会打印

 1 3 4
 2 6 2
Run Code Online (Sandbox Code Playgroud)

期待您的回答.谢谢你们.AA

编辑

所以我研究了你的建议来制作一个使用初始化列表初始化元素的通用数组.但这是我能获得的最通用的.如果你们中的任何人有任何建议可以使它成为一个更通用的课程,我将不胜感激.还有几个问题:

  • 派生类初始化基类的状态是否正常?我不是因为这个而调用基础构造函数,但是我应该调用它吗?
  • 我将析构函数定义为Generic_base类是受保护的,这是正确的方法吗?
  • 是否有任何可预见的方法以更通用的方式执行属于初始化程序的构造函数的代码?我的意思是有一个 …

c++ nested-lists initializer-list c++11

17
推荐指数
1
解决办法
7900
查看次数

标签 统计

c++ ×1

c++11 ×1

initializer-list ×1

nested-lists ×1