Я знаю, что std::iterator — это базовый класс для std::iterator_traits. Оба они являются классами. В то время как std::random_access_iterator_tag представляет собой структуру.
Моя первая попытка выглядит примерно так: (пример этой ссылки)
Код: Выделить всё
#include // std::cout
#include // std::iterator, std::input_iterator_tag
class MyIterator : public std::iterator
{
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;}
};
Подробнее здесь: https://stackoverflow.com/questions/703 ... cess-itera
Мобильная версия