...
typedef T* iterator;
typedef const T* const_iterator;
//Поддержка итераторов
iterator begin(){ return vect; }
const_iterator begin() const { return vect; }
iterator end(){ return vect + size; }
const_iterator end() const { return vect + size; }
...
Шаблонный класс Vector и итератор к нему(C++)
Возникли некоторые вопросы относительно данной задачи.
1-В классе итератора должен хранится указатель на обьект класса вектор или только на информационную часть(массив обьектов шаблонного типа).
2-Отношения между классами:я сделал следующим образом - вектор и итератор дружественны друг другу и в итераторе имеется private конструктор благодаря чему обьекты класса итератор способен создавать только класс вектор(правильна ли такая схема?).Как на ваш взгяд лучше организовать структуру классов?
3-Не мог бы кто нибудь привести пример любого шаблонного контейнер и итератора к нему.
Заранее спасибо.
В FAQ раздела Студентам есть интерфейсный класс для массива, который делал Б.Страуструп,там он сделал и поддержку итераторов. Далее в том же FAQ есть шаблонный класс Vector, обсуждали уже не раз...Теперь в этот шаблонный класс добавь то что делал Страуструп и получишь то что тебе надо.Работы на 5 минут.Все работает и все прекрасно.Разберись.
Сорри за тему,сразу не догадался полезть в FAQ)
Код:
Дальше используй так:
Код:
...
Vector<int> v(4);
// Ввод компонент вектора
cin >> v;
transform(v.begin(),v.end(),
v.begin(),
negate<int>());
for(Vector<int>::iterator it = v.begin();it != v.end();++it)
cout<<*it<<' ';
...
Vector<int> v(4);
// Ввод компонент вектора
cin >> v;
transform(v.begin(),v.end(),
v.begin(),
negate<int>());
for(Vector<int>::iterator it = v.begin();it != v.end();++it)
cout<<*it<<' ';
...
Испльзуешь алгоритм transform,например,чтоб преобразовать все элементу к отриц.значениям и цикл для обхода контейнера с помощью итератора.
Мне надо чтоб итератор реализовывался не через обычный указатель на шаблонный тип,а через класс предоставляющий методы индексирования,инкременты,декрименты и разименования.
Вот и вся проблема, я знаю как написать шаблонный контейнер но вот с классом итератора возникла некая путаница((.Что должен содержать в себе класс итератора,непосредственно указатель на обьект класса или на информационную часть контейнера?
Помоему сам препод не до конца понимает что он от меня хочет))