собственный класс 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/


Ответы (0 шт):