gpt4 book ai didi

c++ - 创建类迭代器

转载 作者:行者123 更新时间:2023-11-28 07:37:38 34 4
gpt4 key购买 nike

我想创建一个类迭代器,它可以传递各种 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
};

感谢任何帮助!

最佳答案

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

例如,链表迭代器的 operator++ 可能会做类似 location = location -> next;operator++ 的事情array-like 可能会做类似 ++location; 的事情。

理论上,您可以创建一个元迭代器(可以这么说),它可以与提供特定接口(interface)(例如,至少 ++*!=)。这与概念应该做的(一小部分)大致一致。仍在讨论“概念精简版”,它可能在未来提供类似的东西(至少提供定义这样一个接口(interface)的能力,这样你就可以直接指定特定算法需要哪些操作)。

这样的元迭代器只有在你做更多的事情时才会真正受益,例如提供许多实现,允许你将使用一个接口(interface)的算法适应提供各种不同接口(interface)的容器(例如,可以允许将 STL 算法直接应用于 wxWidgets 或 Qt 集合)。后者相当不常见(至少在 C++ 中),因为它通常更容易首先提供像样的迭代器。

关于c++ - 创建类迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16429708/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com