输入迭代器是否必须有一个 const
解引用运算符,或者仅仅是一个非 const 版本也能满足它的要求?
最佳答案
没有。
例如“输入迭代器”。
这通常是从流中读取的。取消引用它会读取一个值并更改基础流。在使用++ 运算符之前,使用取消引用运算符将再次无效。
http://www.sgi.com/tech/stl/InputIterator.html
根据评论进行编辑。
你问的是can吗?
Sure it can you can do anything in C++.
或者你问的是应该?
Now it depends on which bit is const:
- Do you mean should de-reference by a const method?.
- Or do you mean the reference returned (to the object) is const?
我个人认为这两个问题的答案是否定的。
我认为我很确定这不会违反输入迭代器的约束(在上面的链接中定义)。
但是 我认为返回一个对象的非成本引用是不明智的,如果用户改变了该对象也不会改变流所引用的底层对象(这违反了最少的惊喜)。
总的来说,我认为你需要澄清你的问题。
如果您更详细地解释上下文并询问特定签名是否违反约束,那么我可能会给出更好的答案。目前这个问题过于模糊,因此我只能以过于笼统的方式表达答案。
关于c++ - 输入迭代器必须具有 const 解引用运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13427305/