创建一个类迭代器

时间:2013-05-07 22:34:50

标签: c++ inheritance iterator

我想创建一个class iterator来传递各种A(我的意思是:链表和数组[INDEXES])。

我该怎么办呢?

我应该在A,B和C的类中定义什么?

class Iterator {
    A* a;
  public:
    A* getnext() {}
    A* getcontant() {}
};

class A {
   public:
     iterator* iterator() {}
};

class B : public A {
    linkedlist* head; // a linked list of nodes
};

class C : public A {
    INDEXES* vec; // vec is an array of objects of INDEXES
};

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

你可能不能。迭代器(或至少大多数迭代器)特定于特定集合。

例如,对于链接列表迭代器,operator++可能会执行类似location = location -> next;的操作,而operator++可能会执行类似于++location;之类的操作。{ / p>

理论上,您可以创建一个元迭代器(可以这么说),它可以与任何提供特定接口的迭代器一起使用(例如,至少++*和{{1} })。这与概念应该做的(一小部分)大致相同。还有一些关于“概念精简版”的讨论可能在未来提供类似的东西(至少提供定义这样一个界面的能力,因此你可以直接指定特定算法需要哪些操作)。

如果你做了更多的事情,这样的元迭代器实际上只会获得很多,例如提供许多实现,允许你使用一个接口的算法适应提供各种不同接口的容器(例如,可以允许)将STL算法直接应用于wxWidgets或Qt集合)。后者是一种相当罕见的(至少在C ++中),因为它通常更容易提供正确的迭代器。