如何定义自定义输入迭代器的指针

时间:2015-11-19 13:42:30

标签: c++ pointers iterator

我正在编写一个自定义输入迭代器,它可以调整基础序列并产生转换后的值(我知道boost::transform_iterator,但这很特别)。

我不确定如何为此迭代器定义pointer - 类型。由于迭代器动态生成值,reference被定义为value_type的别名(允许输入迭代器,reference必须只能转换为value_type)。我的直觉是,它仍然只是value_type *,我无法想到任何有意义的事情。

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

所以我的问题是,将boost::transform_iterator定义为pointer通常是否安全?如果没有,有哪些替代方案?

1 个答案:

答案 0 :(得分:2)

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

  

[...]另外,类型

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

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