簡體   English   中英

具有符合STL的const迭代器的非const引用類型?

[英]Non-const reference type with STL-conforming const Iterator?

我正在編寫一個類,該類本質上為其他一些數據提供了靈活的接口。 我想使用符合STL的迭代器來遍歷元素,而使用boost::iterator_facade可以使我boost::iterator_facade正軌,但是我對符合性有疑問,我似乎找不到官方的答案。

我是否必須提供用於STL一致性的常量迭代器?

我使用std::shared_ptr<T>&作為迭代器提供的非常量解引用類型。 如果我確實提供了const迭代器,那么為我的取消引用類型提供std::shared_ptr<T>&而不是std::shared_ptr<const T>&嗎?

我感覺這兩者的答案是否定的,但是我找不到能證實/使那些懷疑無效的官方消息。 我認為第二個問題更多是語義問題。

您可以決定const應該達到的范圍。

標准方法是,在const_iterator返回的元素上(可能是通過引用)加一個const 這就是標准庫的功能。
因此,如果標准迭代器的返回類型為std::shared_ptr<T>& ,則常量迭代器的返回類型應為const std::shared_ptr<T>&

順便說一句:您是否閱讀了標准的描述迭代器要求的部分,例如:

Random Access -> Bidirectional -> Forward -> Input
                                             Output

完整的容器接口提供了常量迭代器和非常量迭代器。
如果您將自己限制在那些不會嘗試獲取常量迭代器的算法上,則可以省略它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM