簡體   English   中英

創建一個類迭代器

[英]Create a class iterator

我想創建一個可以遍歷各種A的class iterator (我的意思是:鏈接列表和數組[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
};

任何幫助表示贊賞!

你可能做不到。 迭代器(或至少大多數迭代器)特定於特定集合。

例如,用於鏈表迭代器的operator++可能會執行諸如location = location -> next; 而對於類似數組的operator++可能會執行類似++location; 代替。

從理論上講,您可以創建一個元迭代器(可以這么說),它可以與提供特定接口(例如,至少++*!= )的任何迭代器一起使用。 這大致與概念應該做的(一小部分)一致。 仍在討論“概念精簡版”,它可能在將來提供類似的功能(至少提供了定義此類接口的功能,因此您可以直接指定特定算法所需的操作)。

這樣的meta-iterator僅在您做更多的事情時才真正受益匪淺,例如提供許多實現,使您可以將使用一個接口的算法適配到提供各種不同接口的容器中(例如,可以允許應用STL算法直接到wxWidgets或Qt集合)。 后者是相當不常見的(至少在C ++中是這樣),因為通常首先提供像樣的迭代器通常比較容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM