Ori*_*ent 2 c++ iterator move c++11
关于InputIterator / OutputIterator -s 将它们的语义修改为仅移动是否一致?当然,我指的是新创建的自定义迭代器,而不是STL迭代器。
输入和输出迭代器的语义要求++i和表达式的注释相应地表示:++r
后置条件: 先前值的任何副本
i不再需要可取消引用或位于 的域中==。在此操作之后,
r不再需要可递增,并且以前值的任何副本r不再需要可取消引用或可递增。
我认为在大多数情况下禁止拥有输入/输出迭代器的副本会更安全,但从未听说过这样的建议。这是坏主意吗?
在 C++20 中,新的迭代器概念input_iterator不output_iterator要求可复制。命名空间中的算法ranges以及视图适配器也支持仅移动迭代器。
新视图ranges::istream_view返回仅移动迭代器以提高安全性。最后,新的 C++20view概念本身不需要可复制性,仅允许移动其自身的状态。
仍然可以创建copyable input_iterator,但我建议不要这样做output_iterator。copyable
forward_iterator当然,仍然需要 s copyable。哨兵还需要copyable
您可以在以下论文中阅读有关设计的内容
| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |