创建类迭代器
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;
的操作。
理论上,你可以创建一个元迭代器(可以这么说),它可以与任何提供特定接口的迭代器一起工作(例如,至少++
、*
和!=
)。这与概念应该做的(一小部分)大致一致。还有一个关于"概念生活"的讨论,可能在将来提供类似的东西(至少提供定义这样一个接口的能力,这样你就可以直接指定特定算法需要什么操作)。
这样的元迭代器只有在你做更多的事情时才会真正获得更多,比如提供一些实现,允许你将使用一个接口的算法适应提供各种不同接口的容器(例如,可以允许将STL算法直接应用于wxWidgets或Qt集合)。后者是相当罕见的(至少在c++中),因为首先提供合适的迭代器通常更容易。
相关文章:
- 使用std::multimap迭代器创建std::list
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?
- 如何创建迭代器函数
- C++ 为 costum 类创建一个 const 迭代器
- 创建可以遍历 std::map 值的通用模板迭代器的最简单方法是什么?
- 创建一个简单的前向迭代器,该迭代器在循环缓冲区的"end"处自动换行
- 创建以向量/列表迭代器为键的映射
- 是否可以创建虚拟迭代器类?
- 在多个 STL 对对象上创建迭代器
- 为结构的向量创建C 矢量迭代器
- C 使用默认限制的迭代器创建一个空的std :: String
- 有没有办法创建一个花哨的迭代器和相应的新数组,以便检查每个索引的索引值的条件?
- 我正在尝试使用矢量迭代器创建一个 for 循环
- 从实现 operator[] 的类自动创建迭代器
- 为矩阵创建动态数组,以循环迭代器命名
- 创建库以覆盖迭代器的操作员*() - 风险悬挂指针
- 创建不存储value_type的输入迭代器
- 为 map<T1、T2> 迭代器创建模板函数
- C++从两个迭代器创建列表对
- C++从模板迭代器创建向量