【问题标题】:How to define pointer for a custom input iterator如何为自定义输入迭代器定义指针
【发布时间】:2015-11-19 13:42:29
【问题描述】:

我正在编写一个自定义输入迭代器,它适应底层序列并产生转换后的值(我知道boost::transform_iterator,但这是特殊的)。

我不确定如何为此迭代器定义pointer-type。由于迭代器动态生成值,reference 被定义为value_type 的别名(允许输入迭代器,reference 必须只能转换为value_type)。我的直觉是它仍然只是value_type *,我真的想不出还有什么有意义的。

但是,我没有找到任何有关pointer 预期使用的上下文的信息,因此不知道对其有什么要求,以及boost::transform_iterator 的文档(通常提供有用的建议)对这个问题保持沉默。

所以我的问题是,将pointer 定义为value_type * 通常安全吗?如果没有,有什么替代方案?

【问题讨论】:

    标签: c++ pointers iterator


    【解决方案1】:

    我在标准中唯一能找到它们应该引用的内容来自 [iterator.traits]

    [...]此外,类型

    iterator_traits<Iterator>::reference
    iterator_traits<Iterator>::pointer
    

    应定义为迭代器的引用和指针类型,即对于一个迭代器对象a,分别与*aa-&gt;的类型相同。

    【讨论】:

      猜你喜欢
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 2015-02-04
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多