【问题标题】:Why is difference_type part of std::weakly_incrementable concept?为什么 difference_type 是 std::weakly_incrementable 概念的一部分?
【发布时间】:2021-11-24 22:07:09
【问题描述】:

我试图找出difference_type 成员对于满足std::weakly_incrementable 概念的意义。我目前正在定义一个满足std::output_iterator 的类,并且在域中没有任何东西可以附加这种类型(并且正在努力寻找它的用例)。

我已经追踪到n3351 paper 的根,但还没有找到真正的原因。为什么委员会选择将它放在层次结构中的这个位置而不是std::input_iterator

【问题讨论】:

  • difference_type 是什么?基本上,如果迭代器具有- 运算符来计算从迭代器到另一个迭代器所需的++ 的数量,那么它将返回difference_type。您只需让它成为 std::ptrdiff_t 或足够大的有符号整数。
  • 标准中有很多范围迭代器操作需要使用iter_difference_t<I>,其中I可以是output_iterator

标签: c++ iterator c++20 c++-concepts


【解决方案1】:

ranges::advance et.al. 使用。

对于++ 是无操作的输出迭代器,可以将其定义为您喜欢的任何有符号整数类型。我推荐std::ptrdiff_t。另见:std::ostream_iterator::difference_type

【讨论】:

    猜你喜欢
    • 2013-09-17
    • 2017-11-05
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 2014-10-20
    • 2019-07-02
    • 2010-11-24
    • 2011-01-15
    相关资源
    最近更新 更多