[英]How to define pointer for a custom input iterator
我正在編寫一個自定義輸入迭代器,它適應底層序列並產生轉換后的值(我知道boost::transform_iterator
,但這是特殊的)。
我不確定如何為這個迭代器定義pointer
類型。 由於迭代器動態生成值, reference
被定義為value_type
的別名(允許輸入迭代器, reference
必須僅可轉換為value_type
)。 我的直覺是它仍然只是value_type *
,我真的想不出任何其他有意義的東西。
但是,我還沒有找到任何關於預期使用pointer
的上下文的信息,因此不知道對它有什么要求, boost::transform_iterator
的文檔(通常提供有用的建議)是在這個問題上保持沉默。
所以我的問題是,將pointer
定義為value_type *
通常是否安全? 如果沒有,有哪些替代方案?
我在標准中唯一能找到的指出他們應該引用的內容來自 [iterator.traits]
[...]此外,類型
iterator_traits<Iterator>::reference iterator_traits<Iterator>::pointer
應定義為迭代器的基准和指針類型,即,用於一個迭代器對象
a
,類型相同的類型*a
和a->
,分別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.