我想通过使用泛型编程来创建类来支持下面的语句
matrix<int, 2, 2> tonpai = { { 1,2 },{ 3,4 } };
谢谢。 //我正在尝试这样做,但我不知道构造函数应该是什么参数。对不起我的英语不好。这是我的第一个问题。
答案 0 :(得分:1)
我猜你的问题实际上是关于如何让你的类'构造函数接受那种初始化列表。但是,评论员似乎认为你在询问如何实现矩阵类。
以防我是对的,这是一个从初始化列表构建的示例。
但如果我错了,请记住这个例子的数组实现很糟糕,你不想使用它。我选择了一个C风格的静态数组,因为它设置简单,人们熟悉它们的工作方式。
此外,如果列表包含太多元素,则此初始化将写入数组的边界外,因此请记住您的类。
我还假设你不关心保持你的构造函数constexpr。
所以这里是一个构造函数接受一个2嵌套初始化列表的例子,只有......:
#include <initializer_list>
#include <iostream>
template <typename T, int row_count, int col_count>
class matrix {
T carray[row_count][col_count];
public:
matrix(std::initializer_list< std::initializer_list<T> > init_list) {
int rowidx=0;
for(const auto& row : init_list) {
int colidx=0;
for(const auto& elem : row) {
carray[rowidx][colidx++] = elem;
}
++rowidx;
}
}
void Print() const {
for(const auto& row : carray) {
for(const T& elem : row) {
std::cout << elem << " ";
}
std::cout << '\n';
}
}
};
int main() {
matrix<int, 2, 2> tonpai = { { 1,2 }, { 3,4 } };
tonpai.Print();
}