C++泛型泛型类型
C++ generic type of generic type
我正在尝试基于我已经构建的通用向量构建通用矩阵。我想要一个向量的向量(每个内部向量代表一行)。出于某种原因,这不起作用:
template <typename T>
class matrix : vector<vector<T>>{...}
我收到这个错误:
error: 'class vector<T>' is not a valid type for a template non-type parameter
我尝试查看模板模板,但无法真正理解如何使它们发挥作用。任何帮助将非常感激。谢谢!
这应该适合你:
#include <vector>
template <typename T>
class matrix : public std::vector<std::vector<T>>
{
};
int main()
{
matrix<int> m;
m.push_back({});
m[0].push_back(0);
m[0].push_back(1);
m[0].push_back(2);
m.push_back({});
m[1].push_back(3);
m[1].push_back(4);
m[1].push_back(5);
m.push_back({});
m[2].push_back(6);
m[2].push_back(7);
m[2].push_back(8);
return 0;
}
但是我建议调查“A proper way to create a matrix in c++”主题,它看起来非常接近您想要实现的内容。
我正在尝试基于我已经构建的通用向量构建通用矩阵。我想要一个向量的向量(每个内部向量代表一行)。出于某种原因,这不起作用:
template <typename T>
class matrix : vector<vector<T>>{...}
我收到这个错误:
error: 'class vector<T>' is not a valid type for a template non-type parameter
我尝试查看模板模板,但无法真正理解如何使它们发挥作用。任何帮助将非常感激。谢谢!
这应该适合你:
#include <vector>
template <typename T>
class matrix : public std::vector<std::vector<T>>
{
};
int main()
{
matrix<int> m;
m.push_back({});
m[0].push_back(0);
m[0].push_back(1);
m[0].push_back(2);
m.push_back({});
m[1].push_back(3);
m[1].push_back(4);
m[1].push_back(5);
m.push_back({});
m[2].push_back(6);
m[2].push_back(7);
m[2].push_back(8);
return 0;
}
但是我建议调查“A proper way to create a matrix in c++”主题,它看起来非常接近您想要实现的内容。