Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2011, 17:03   #1
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию что такое итератор?

если я например имею следующий шаблон (будущий динамический список, подобный STLвскому (преаодаватель самодур ) ):

Код:
namespace containers
{

	template <typename T>
	class list
	{
		public:
			list (void);
			~list (void);
			void clear (void);								//	очистка
			bool empty (void);								//	проверка на пустоту
			bool is_in (T);									//	опрос наличия заданного значения
			T& read (size_t);								//	чтение значения с заданным номером в списке
			void write (size_t, T);							//	чтение значения с заданным номером в списке
			size_t position (T);							//	получение позиции в списке для заданного значения
			void push (T);									//	сключение нового значения
			void push_with_number (T, size_t);				//	включение нового значения в позицию с заданным номером
			void delete_element (T);						//	удаление заданного значения из списка
			void delete_element_with_number(size_t);		//	удаление значения из позиции с заданным номером

		private:
		size_t _size;
	};

};
и хочу организовать для данного списка итератор. собственно итератор, это указатель на объект типа "T"?
Kukurudza вне форума Ответить с цитированием
Старый 21.06.2011, 17:05   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://ru.wikipedia.org/wiki/Итератор_(программирование)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.06.2011, 22:38   #3
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию

спасибо, почитал. следующий вопрос. как это реализовать?
имею тот же контейнер.
как сделать так чтобы оператор ++ для итератора заработал?

Код:
#include "stdafx.h"
#include "iostream"

namespace containers
{

	template <typename T>
	struct unit
	{
		T element;
		unit* next;
	};

    template <class T>
    class list_iterator
    {
	public:
		T *ptr;

		list_iterator (T* ptr_=0) : ptr(ptr_) {};

		T& operator*() { return *ptr; }
		T* operator->() { return ptr; }

		T* operator++()
		{
			return ++ptr;
		}
	};

	template <typename T>
	class list
	{
		public:

			friend class list_iterator<T>;
			typedef list_iterator<T> iterator;

			iterator begin ()
			{
				return &(_begin -> next -> element);
			};

			iterator end ()
			{
				return &(_end -> element);
			}

		private:
			size_t _size;									//	количество элементов в списке
			unit<T>* _begin;									//	указатель на первое фиктивное звено
			unit<T>* _end;										//	указатель на конец цепочки
	};

};
Kukurudza вне форума Ответить с цитированием
Старый 22.06.2011, 00:56   #4
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Итератор должен иметь информацию именно об элементе списка, чтобы получить доступ к полю next (иначе невозможно реализовать операцию ++).
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 22.06.2011, 09:57   #5
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Kukurudza

спасибо, почитал. следующий вопрос. как это реализовать?

А теперь - читать Джеффа Элджера: C++: Библиотека программиста
Rififi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что такое f. spezzA Паскаль, Turbo Pascal, PascalABC.NET 1 13.06.2011 16:21
Что такое хорошо, а что такое плохо... EL_MoC Microsoft Office Word 6 14.04.2011 18:49
Что такое ^= ? k1r1ch Общие вопросы C/C++ 3 10.01.2010 17:15
Что такое @? k1r1ch Общие вопросы Delphi 11 11.09.2009 20:15
то такое мастерство в программировании, что такое мастер программист и что он может? Cezar Свободное общение 29 02.06.2007 23:48