いくつかのベクトルのイテレータの私の実装:のstd ::ソート認識しない反復子カテゴリ
class iterator : public std::iterator<std::input_iterator_tag, int> {
Vector<T> *vector;
size_t position;
public:
iterator(Vector<T> *vector_, size_t idx) {...};
iterator(const iterator &it) {...};
friend bool operator == (const iterator &a, const iterator &b) {...};
friend bool operator > (const iterator &a, const iterator &b) {...};
friend bool operator < (const iterator &a, const iterator &b) {...};
friend bool operator >= (const iterator &a, const iterator &b) {...};
friend bool operator <= (const iterator &a, const iterator &b) {...};
friend bool operator != (const iterator &a, const iterator &b) {...};
iterator &operator = (const iterator &b) {...};
T operator *() {...};
iterator &operator ++() {...}
iterator &operator --() {...}
std::ptrdiff_t operator - (const iterator &b) const {...}
};
しかし、理由はランダムアクセスのようstd::sort(vector.begin(), vector.end())
出力no operator +=
のようなエラーが、実際にポイントstd::sort
お菓子私のイテレータを呼び出す来るため。どうして?
質問とは無関係に、 'input_iterator_tag'はこのイテレータの正しいタグではなく、' int'は正しい 'value_type'ではありません。 – Barry
明らかに 'std :: sort'のドキュメントを読んだことはありませんが、推測でプログラミングしています。 –