对std :: iterator< ...>?的模板参数有什么要求?

时间:2015-12-29 18:43:16

标签: c++ templates matrix stl iterator

我正在尝试编写一个矩阵类,其中begin()end()成员函数用于迭代矩阵的行。为了获得良好的内存占用,我决定保留三个成员变量:

  • 行数
  • 列数
  • 类型std::unique_ptr<T[]>的数据向量,其中T是我的矩阵类的模板参数。

我想与STL算法很好地互操作,因此我希望我的迭代器继承自

namespace std {
    template<
        class Category,
        class T,
        class Distance = std::ptrdiff_t,
        class Pointer = T*,
        class Reference = T&> 
    struct iterator;
}

这个基类std::iterator<...>有几个模板参数,其默认参数并不适合我的情况。这些行不是我的矩阵的元素,但我需要指定Reference类型,该类型用于引用矩阵中的行。 Pointer类型相同。

我该如何解决这个问题? std::iterator<...>模板类的模板参数需要满足哪些要求?

到目前为止我的努力:我实现了一个名为RowView的模板类,然后将其作为Reference的类型,即使它不是引用类型。我想,这可能有用,因为std::vector<bool>做了类似的事情。但是由于this reference没有详细说明要求,我想,在制造大的设计错误之前,我最好先问一下。 My source code can be found on github.相关课程是模板专精template <typename T> class Mat<T,0,0>

0 个答案:

没有答案