C ++迭代器:抽象类的迭代器可以实现为嵌套类吗?

时间:2012-10-11 06:43:45

标签: c++ stl iterator

我想知道是否可以将抽象类的自定义迭代器实现为具有适当的运算符和方法重载的嵌入类。也就是说,如果它作为一个起点可以正常开始:

template <typename T>
class my_class {
public:
    .
    .
    class iterator {
    public:
        .
        .
    };
};

我已经尝试了解实现自定义迭代器的几种不同方法,但是如果布局可以稍微简化就会更容易理解。现在可以在my_class中实现begin(),end()等方法以及所需的任何其他类型。

这样的实现是否与STL算法兼容?我记得已经实现了这样一个似乎有用的迭代器类,但我不确定它是否一般都可以。

1 个答案:

答案 0 :(得分:2)

不需要定义类型。它必须可以作为 container :: iterator(和 container :: const_iterator)访问,并且没有理由不能它在那里定义。嵌套类型就像任何其他类型一样。