如何在类中初始化2D数组?

时间:2014-10-02 11:07:32

标签: c++ arrays templates constructor

我有一个类似于这样的Matrix类:

template<int R, int C>
class Matrix{
public:
    double matrix[R][C];
    Matrix(double n = 0)...{}
    ...
};

Matrix<2,3> m;

如何在c中创建一个带n的新矩阵时如何初始化数组,而不是逐个迭代整个数组?

我在这里读到了一些名为memset的答案,但我目前无法使用它(它是家庭作业的一部分)。

2 个答案:

答案 0 :(得分:1)

我的建议是尽可能使用std算法:

    std::for_each(std::begin(matrix), std::end(matrix), 
              [n](double* row) { std::fill_n(row, C, n); } );       

完整示例:

template<int R, int C>
class Matrix{
public:
    double matrix[R][C];
    Matrix(double n = 0) {
         std::for_each(std::begin(matrix), std::end(matrix), 
                       [n](double* row) { std::fill_n(row, C, n); } );      
    }
};

答案 1 :(得分:0)

使用清晰,简单,明显的代码迭代整个数组单元格。如果您的编译器是合理的(并且为什么使用它,如果它不是),它将准确理解您正在做什么并替换为您的平台的最佳初始化机制。