如何使用嵌套初始化构造函数中的一维向量初始化矩阵

How to initialize matrix with 1d vector from nested initialized constructor?

本文关键字:初始化 向量 一维 何使用 嵌套 构造函数      更新时间:2023-10-16

我遇到了将嵌套形式的矩阵初始化为矩阵类的向量成员的问题initializer_lists。 您能否为我提供一个有关如何执行此操作的解决方案!

   #include <initializer_list>
   #include <iostream>
   #include <stdexcept>
   #include <vector>
   using namespace std;
   class matrix {
   private:
   unsigned int rows;
   unsigned int columns;
   vector<int> data;
   public:{
   matrix(size_t rows, size_t columns):rows(0),columns(0),data(){
};
   matrix(size_t ros, size_t cols, const int &ival){
    data.clear();
    rows =ros;
    columns = cols;
     size_t vSize = rows*columns; 
    for(unsigned int i = 0; i < vSize; i++) {
    data.push_back(ival);
     } 
   };
   friend ostream &operator<<(ostream &os, const matrix &m){
   for(size_t i = 0; i < m.data.size(); i++) {
    os << m.data[i] << "  ";
    if((i+1)%m.num_columns() == 0) 
        os <<"n";
     }
     return os;
    };
   matrix(initializer_list<initializer_list<int>> imat); //require 
   //implementation of constructor to feed nested initializer list data in 
   //1d vector data
  }
  int main() {   
   matrix<double> d = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
   cout<<d;
   return 0;
  }

像这样的东西?

matrix(std::initializer_list< std::initializer_list< int > > imat)
    {
        for (auto &row : imat)
        {
            data.insert(data.end(), row.begin(), row.end());
        }
    }