关于C++中的迭代器

fra*_*lin 4 c++ iterator stl

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

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

通常,我->在迭代器上使用并没有任何问题.任何人都可以举例或解释吗?

eca*_*mur 11

"更有效的C++"已有近20年的历史(1996年出版); 虽然是一本优秀的书,但应该通过对其历史背景的认识来阅读.

在2003版本的标准(本身超过10年)中,迭代器需要支持->([lib.iterator.requirements]/1):

[...] i表达式(*i).m定义明确的所有迭代器都支持表达式i->m,其语义与(*i).m.[...] 相同

(*i).m在使用不合规的"标准"库的古老实现时,您只需要编写.