c++ - 如何为自定义输入迭代器定义指针

标签 c++ pointers iterator

我正在编写一个自定义输入迭代器,它适应底层序列并产生转换后的值(我知道 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 and a->, respectively.

关于c++ - 如何为自定义输入迭代器定义指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33805613/

相关文章:

c++ - 为什么在调用recv系统调用时会调用sigprocmask?

c++ - 使 C++ 将指向 NULL 的指针解释为零

c++ - 容器作为函数参数

c++ - 未处理的异常 : 0x80000001: Not implemented. (VC++)

c++ - 最令人烦恼的解析和指针间接/解引用

c++ - 通过返回的指针填充私有(private)域

php - 如何使用 RecursiveIteratorIterator 忽略目录?

c++ - 无法访问 multimap 迭代器的方法?

c++ - 没有累积缓冲区的 OpenGL 运动模糊

c - 使用数组和指针算法闪烁 LED