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

Posted

技术标签:

【中文标题】输入迭代器是不是只能在赋值的右手符号上被取消引用?【英文标题】:Can an input iterator be dereferenced only on the right-hand sign of an assignment?输入迭代器是否只能在赋值的右手符号上被取消引用? 【发布时间】:2019-09-26 11:53:15 【问题描述】:

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

迭代器类别

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

比较两个迭代器的等式和不等式运算符(==!=

前缀和后缀递增 (++) 以推进迭代器

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

箭头运算符 (->) 是 (*it).member 的同义词——也就是说, 取消对迭代器的引用并从底层对象中获取一个成员。

他的意思是“取消引用运算符 (*) 来读取元素;取消引用可能只出现在赋值的右侧”:在“赋值的左侧”。??

我对此感到困惑。谢谢。

【问题讨论】:

【参考方案1】:

作者的意思是如果你有一个输入迭代器it,那么你可以这样做:

foo = *it;

但您可能无法做到:

*it = foo;

即您可以从迭代器中读取(它在赋值的右侧),但不能保证您可以写入到它(它在左侧)。

【讨论】:

好的好的 谢谢!立即获取! 所以你的意思是fooit 表示的底层类型的对象? @ItachiUchiwa - 是的。

以上是关于输入迭代器是不是只能在赋值的右手符号上被取消引用?的主要内容,如果未能解决你的问题,请参考以下文章

由引用传递的迭代器集/映射迭代器不可取消引用

这段代码在哪里取消引用无效的迭代器? (C++)

向量迭代器不可取消引用 C++

取消引用集合迭代器时将“字符串&”绑定到“常量字符串”时出错

并行流是不是以线程安全的方式处理上游迭代器?

迭代器未按预期运行