C ++泛型类型泛型类型

时间:2019-01-10 01:26:00

标签: c++ templates template-templates

我正在尝试基于已经构建的通用向量构建通用矩阵。我想要一个向量向量(每个内部向量代表一行)。由于某些原因,这不起作用:

template <typename T>
class matrix : vector<vector<T>>{...}

我收到此错误:

error: 'class vector<T>' is not a valid type for a template non-type parameter

我尝试研究模板模板,但是并不能真正理解如何使它们工作。任何帮助将非常感激。谢谢!

1 个答案:

答案 0 :(得分:1)

这应该对您有用:

#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++”主题。