输入迭代器只能在赋值的右手符号上取消引用吗?

Ita*_*iwa 8 c++ iterator

我有一个简单的问题:在Lippman第10章的C ++入门5中。它说:“迭代器类别”:

迭代器类别

输入迭代器:可以读取序列中的元素。输入迭代器必须提供

  • 相等和不相等运算符(==,!=)比较两个迭代器

  • 前缀和后缀增量(++)推进迭代器

  • 解引用运算符(*)以读取元素;取消引用可能仅出现在作业的右侧

  • 箭头运算符(->)是—的同义词,(*it).member即取消引用迭代器并从基础对象中获取成员。

他的意思是“去引用运算符(*)以读取元素;去引用只能出现在作业的右侧”:在“作业的左侧”。

我对此感到困惑。谢谢。

Sto*_*ica 13

作者的意思是,如果您有输入迭代器it,则可以执行以下操作:

foo = *it;
Run Code Online (Sandbox Code Playgroud)

但您可能无法执行以下操作:

*it = foo;
Run Code Online (Sandbox Code Playgroud)

也就是说,您可以从迭代器读取(它位于分配的右侧),但不能保证您可以对其进行写入(它位于左侧)。