我有一个类似于这样的Matrix类:
template<int R, int C>
class Matrix{
public:
double matrix[R][C];
Matrix(double n = 0)...{}
...
};
Matrix<2,3> m;
如何在c中创建一个带n
的新矩阵时如何初始化数组,而不是逐个迭代整个数组?
我在这里读到了一些名为memset
的答案,但我目前无法使用它(它是家庭作业的一部分)。
答案 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)
使用清晰,简单,明显的代码迭代整个数组单元格。如果您的编译器是合理的(并且为什么使用它,如果它不是),它将准确理解您正在做什么并替换为您的平台的最佳初始化机制。