1

カスタム コンテナー用に独自のイテレーター (ランダム アクセス イテレーター) を作成する必要があります。また、再実装iterator_traitsも必要です。

std::iteratorの基本クラスであることはわかっていstd::iterator_traitsます。どちらもクラスです。一方std::random_access_iterator_tag構造体です。

私の最初の試みは次のようなものです: (このリンクの例)

#include <iostream>     // std::cout
#include <iterator>     // std::iterator, std::input_iterator_tag

class MyIterator : public std::iterator<std::random_access_tag, int>
{
  int* p;
public:
  MyIterator(int* x) :p(x) {}
  MyIterator(const MyIterator& mit) : p(mit.p) {}
  MyIterator& operator++() {++p;return *this;}
  MyIterator operator++(int) {MyIterator tmp(*this); operator++(); return tmp;}
  bool operator==(const MyIterator& rhs) const {return p==rhs.p;}
  bool operator!=(const MyIterator& rhs) const {return p!=rhs.p;}
  int& operator*() {return *p;}
};

でも、写真のどこに入れたらいいのかわからないiterator_traits?御時間ありがとうございます!

4

0 に答える 0