如何实现list <t> :: iterator?

时间:2017-07-30 02:06:06

标签: c++ templates linked-list iterator

我知道如何实现模板类 但是,我不明白如何在内部实现以下list<int>::iterator。我应该创建名称空间吗? (基本上我想在自定义实现中使用相同的STL语法。)

list<int> l;
list<int>::iterator it = l.begin();

简而言之,在没有任何STL库的情况下,使代码工作的最简单方法是什么?

以下是自定义列表实现的片段: (为了便于阅读,我省略了大部分方法。)

template <typename T>
struct list {
        struct listNode {
        listNode() : item(0), next(0) {}
                listNode(T x) : item(x), next(0) {}
                T item;
                listNode* next;
        };
        list() : head(0),tail(0) {}     
        listNode* head;
        listNode* tail;
};

1 个答案:

答案 0 :(得分:2)

您可以在容器类型中实现迭代器类型,以便它具有有关它正在迭代的容器的任何信息。

template<class T>
class SomeContainer {

public:

    class Iterator {
        // You can use SomeContainer and T in here.  
    };
};