我正在编写一个自定义输入迭代器,它适应底层序列并产生转换后的值(我知道 boost::transform_iterator
,但这是特殊的)。
我不确定如何为这个迭代器定义 pointer
类型。由于迭代器动态生成值,reference
被定义为 value_type
的别名(输入迭代器允许,reference
必须只是可转换为 value_type
)。我的直觉是它仍然只是 value_type *
,我真的想不出任何其他有意义的东西。
但是,我还没有找到任何关于预期使用pointer
的上下文的信息,因此不知道对它有什么要求,以及的文档>boost::transform_iterator
(通常会提供有用的建议)在这个问题上保持沉默。
所以我的问题是,将 pointer
定义为 value_type *
通常安全吗?如果不能,有哪些替代方案?
最佳答案
我在标准中唯一能找到的标明它们应该引用的东西来自[iterator.traits]
[...]In addition, the types
iterator_traits<Iterator>::reference iterator_traits<Iterator>::pointer
shall be defined as the iterator’s reference and pointer types, that is, for an iterator object
a
, the same type as the type of*a
anda->
, respectively.
关于c++ - 如何为自定义输入迭代器定义指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33805613/