собственный класс iterator для vector C++
Код для итератора на основе документации https://www.cplusplus.com/reference/iterator/iterator/:
#ifndef _ITERATR_H
#define _ITERATR_H
#include<alloca.h>
#include<iostream>
namespace ft{
template <class Category,
class T,
class Distance = ptrdiff_t,
class Pointer = T*,
class Reference = T&
> class iterator {
public:
typedef T value_type;
typedef Distance difference_type;
typedef Pointer pointer;
typedef Reference reference;
typedef Category iterator_category;
iterator(pointer val): _val(val){}
iterator(const iterator& mit) : _val(mit._val) {}
iterator& operator++() {++_val;return *this;}
iterator operator++(value_type) {
iterator tmp(*this);
operator++();
return tmp;
}
bool operator==(const iterator& rhs) const {return _val==rhs._val;}
bool operator!=(const iterator& rhs) const {return _val!=rhs._val;}
reference operator*() {return *_val;}
private:
pointer _val;
};
}
#endif
Код для vector:
#ifndef _CONTAINERS_H
#define _CONTAINERS_H
#include<alloca.h>
#include<iostream>
#include"iterator.hpp"
namespace ft{
template <typename T, class Alloc = std::allocator<T> >
class vector{
public:
typedef Alloc allocator_type;
typedef T value_type;
typedef T* pointer;
typedef const T* const_pointer;
typedef size_t size_type;
typedef typename Alloc::reference reference;
typedef typename Alloc::const_reference const_reference;
typedef typename ft::iterator<input_iterator_tag, T> my_iterator; //надо передать категорию - как это сделать?
explicit
vector (const allocator_type& alloc = allocator_type())
: _alloc(alloc), _capacity(0), _size(0)
{}
...
Вот сюда, я должна передать категорию typedef typename ft::iterator<input_iterator_tag, T> my_iterator; Как правильно описать или надо писать отдельный класс для категории? в документации не очень понятно https://www.cplusplus.com/reference/vector/vector/