簡體   English   中英

C ++:如何編寫const_iterator?

[英]C++ : How to write a const_iterator?

我用迭代器編寫了自己的容器模板。 我如何實現const_iterator?

template <class T>
class my_container {
 private:
  ...

 public:
  my_container() : ... { }
  ~my_container() { }

  class iterator : public std::iterator<std::bidirectional_iterator_tag, T> {
  public: ...

唯一的區別應該是當你取消引用const迭代器時,你得到一個const引用而不是對容器中對象的引用。

我發現實現迭代器的最簡單方法是boost :: iterator 如果你想自己動手,我認為簽名應該是:

class const_iterator : public std::iterator<std::bidirectional_iterator_tag, const T> {

與實現相同(假設您在函數簽名中使用reference_type等)

Roger Pate,value_types“簡單”。 我懷疑如果你看一下iterator_traits :: const_iterator> :: reference你會看到const,我認為這將是“const int&”。

暫無
暫無

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

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