gpt4 book ai didi

c++ - 为什么迭代器需要默认构造

转载 作者:IT老高 更新时间:2023-10-28 12:37:52 25 4
gpt4 key购买 nike

forwardbidirectionalrandom access 类别的迭代器需要默认可构造。

为什么会这样,为什么 inputoutput 运算符不必是默认可构造的?

最佳答案

前向迭代器和更强的迭代器需要引用一些外部序列(参见 [forward.iterators]/6,其中说“如果 ab 都是可解引用的,那么a == b 当且仅当 *a*b 绑定(bind)到同一个对象。")

这意味着它们通常只是其他东西的轻量级句柄(例如,指向容器中元素或节点的指针),因此没有理由不要求它们可以默认构造(即使默认构造创建在分配新值之前不能用于任何事情的奇异迭代器)。所有非病态的*前向迭代器都可能支持默认构造,并且依赖它使一些算法更容易实现。

仅满足输入迭代器或输出迭代器要求(没有更强大的)的迭代器可能包含由 operator++ 修改的状态,因此该状态可能无法默认 -建。没有只对输入/输出迭代器进行操作的算法需要默认构造它们,因此不是必需的。

  • 在这里发现“没有真正的苏格兰人”的论点;)

关于c++ - 为什么迭代器需要默认构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28832492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com