C++ 迭代器模型与 Java 迭代器模型

C++ Iterator model versus Java Iterator model

本文关键字:迭代器 模型 Java C++      更新时间:2023-10-16

C++ STL 的基本迭代器模型基本上由一个"给我当前位置的项目"运算符*、一个"转到下一个项目"运算符++和一个谓词 ==/!=组成,用于检查(大多数时候(结束迭代器。当然,还有各种具有随机访问的进一步迭代器,但最基本的迭代器看起来像上面描述的那样。

相比之下,Java有next()hasNext()。Next 大致相当于使用 ++ 然后使用 *hasNext()有点像与结束的比较。为什么Java没有采用C++模型(当然,它没有运算符重载,所以它必须通过函数来模仿它(?特别是,为什么hasNext()方法会放弃与结束迭代器的比较?我发现用 Java 编写迭代器通常比用 C++ 编写迭代器更难,因为next()hasNext()背后的逻辑通常比C++运算符中的逻辑更复杂。

首先,您必须了解C++具有指针,迭代器模拟指针。

Java

没有指针,一切都是Java中的对象

C++交互器要强大得多。

请参阅上述评论中的重复答案。

C++ (stl( 与 Java 中的迭代器,在概念上有什么区别吗?

Java 和 C++ 中的迭代器有什么区别?

我建议你阅读如何在Java中处理对象 - Java中的对象

也许你应该将C++迭代器与具有索引访问的Java ListIterator进行比较。Java的迭代器适用于所有类型的集合,并且避免了O(n(访问可能效率低下的索引访问。这是一种选择。当然,可以迭代子列表,获得相同的结果。

  • 在Java 7中,迭代器已经具有第二公民身份,因为有for (item : collection)
  • 在Java 8中提供了collection.forEach(function)

Java 8 forEach是一个明确的改进:外部的迭代器维护一个状态。 forEach由集合类本身完成。这对表现力(流畅组合(、效率、并发性和优化都有影响。(可以在其他地方阅读。

原谅我的英语

1、Java风格的迭代器就像C++前向迭代器类别一样,即C++迭代器的一部分

2、在C++中,迭代器只是STL的一部分,在

C++中定义一个新的迭代器不仅仅意味着你可以遍历一个数据集,它还意味着你可以使用整个STL的能力,那是非常强大的;