如何为自定义输入迭代器定义指针
Posted
技术标签:
【中文标题】如何为自定义输入迭代器定义指针【英文标题】: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 *
通常安全吗?如果没有,有什么替代方案?
【问题讨论】:
【参考方案1】:我在标准中唯一能找到它们应该引用的内容来自 [iterator.traits]
[...]此外,类型
iterator_traits<Iterator>::reference iterator_traits<Iterator>::pointer
应定义为迭代器的引用和指针类型,即对于一个迭代器对象
a
,分别与*a
和a->
的类型相同。
【讨论】:
以上是关于如何为自定义输入迭代器定义指针的主要内容,如果未能解决你的问题,请参考以下文章