is there a way to pass nested initializer lists in C++11 to construct a 2D matrix?

后端 未结 2 780
日久生厌
日久生厌 2020-12-16 11:46

Imagine you have a simple matrix class

template 
class Matrix {

  T* data;
  size_t row, col;

public:

  Matrix(size_t m, size_t         


        
2条回答
  •  旧时难觅i
    2020-12-16 12:40

    Why not?

      Matrix(std::initializer_list> lst) :
      Matrix(lst.size(), lst.size() ? lst.begin()->size() : 0)
      {
         int i = 0, j = 0;
         for (const auto& l : lst)
         {
            for (const auto& v : l)
            {
               data[i + j * row] = v;
               ++j;
            }
            j = 0;
            ++i;
         }
      }
    

    And as stardust_ suggests - you should use vectors, not arrays here.

提交回复
热议问题