как получить индекс элемента массива, зная итератор этого элемента, но итератор у меня свой
Я пишу свой контейнер, и также свой итератор для него. Мне нужно написать функцию, благодаря которой я могу получать индекс элемента массива по итератору, однако у меня не получается. Подскажите, пожалуйста, как это сделать.
#include <iostream>
using namespace std;
template<typename T>
class Container {
public:
Container(int size) {
this->size = size;
this->check = this->size;
this->cap = this->size * 2;
this->array = new T[this->cap];
}
T& operator[](int index) {
return this->array[index];
}
class Iterator;
Iterator begin() { return this->array; }
Iterator end() { return this->array + this->size; }
class Iterator
{
private:
T* cur;
public:
Iterator(T *first) : cur(first)
{}
T& operator+ (int n) { return *(cur + n); }
T& operator- (int n) { return *(cur - n); }
T& operator++ (int) { return *cur++; }
T& operator-- (int) { return *cur--; }
T& operator++ () { return *++cur; }
T& operator-- () { return *--cur; }
bool operator!= (const Iterator& it) { return cur != it.cur; }
bool operator== (const Iterator& it) { return cur == it.cur; }
T& operator* () { return *cur; }
};
~Container() {
delete[] this->array;
}
private:
int size;
T* array;
int cap;
int check;
};