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