关于C++中的迭代器

About iterators in C++

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

我从"更有效的C++"第18项中读到了一些内容:

简而言之,迭代器它是一个对象,而不是指针,因此不能保证"->"可以应用于它。†STL确实要求"."answers"*"对迭代器有效,但是,因此(*it)。第二,尽管语法笨拙,但可以保证工作。)

通常,我在迭代器上使用->,没有任何问题。有人能举个例子或解释一下吗?

《更有效的C++》问世近20年(1996年出版);虽然这是一本优秀的书,但在阅读时应该意识到它的历史背景。

在2003年版本的标准(其本身已有10年的历史)中,迭代器需要支持->[lib.iterator.requestions]/1):

〔…〕所有定义了表达式(*i).m的迭代器i,都支持与(*i).m.语义相同的表达式i->m〔…〕

当使用不兼容的"标准"库处理过时的实现时,您只需要编写(*i).m