我从"更有效的C++"第18项中读到了一些内容:
简而言之,迭代器是一个对象,而不是一个指针,因此无法保证" - >"可以应用于它.†STL确实要求"."和"*"对迭代器有效,但是,所以(*它).第二,尽管语法上很笨拙,但保证可以工作.)
通常,我->在迭代器上使用并没有任何问题.任何人都可以举例或解释吗?
eca*_*mur 11
"更有效的C++"已有近20年的历史(1996年出版); 虽然是一本优秀的书,但应该通过对其历史背景的认识来阅读.
在2003版本的标准(本身超过10年)中,迭代器需要支持->([lib.iterator.requirements]/1):
[...]
i表达式(*i).m定义明确的所有迭代器都支持表达式i->m,其语义与(*i).m.[...] 相同
(*i).m在使用不合规的"标准"库的古老实现时,您只需要编写.