Форум программистов, компьютерный форум CyberForum.ru

Итераторы (пример использования итератора для шаблона, к примеру списка) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
igor921
Заблокирован
01.06.2013, 14:23     Итераторы (пример использования итератора для шаблона, к примеру списка) #1
Доброго времени суток. Форумчани, приведите пожалуйста пример использования итератора для шаблона, к примеру списка. Зараннее благодарен. И если не трудно, разъяснить что это такое и с чем его едят
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2013, 14:23     Итераторы (пример использования итератора для шаблона, к примеру списка)
Посмотрите здесь:

Итераторы и обратные итераторы C++
Пример использования спецификатора volatile C++
C++ итератора для собственного вектора
Ошибка в перегрузке операторов для класса - итератора C++
C++ Удаление елемента списка с использованием итератора. STL
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14213 / 6228 / 988
Регистрация: 02.05.2013
Сообщений: 10,385
Завершенные тесты: 1
01.06.2013, 16:08     Итераторы (пример использования итератора для шаблона, к примеру списка) #2
Итератор - это указатель на элемент контейнера.
Нужен он для того, чтобы работать с элементами контейнера и алгоритмами обобщенно,
независимо от того, какой именно контейнер используется.

Дело в том, что разные контейнеры STL по-разному реализуют доступ к своим элементам.
У vector они расположены последовательно в памяти, у list они связаны через указатели и т.д.
А итератор маскирует эти различия за обобщенным фасадом указателя.
Благодаря итераторам, можно использовать один и тот же алгоритм для разных контейнеров,
не меняя при этом ни строчки кода. Простейший пример:
C++
1
2
3
4
for (container_t::iterator it = Con.begin(); it != Con.end(); ++it)
{
    // ...
}
Этот код последовательно проходит по элементам контейнера Con.
Его тип (container_t) может быть любым: вставьте сюда vector, list, set, map или
queue - код останется работоспособным. В этом основной смысл итераторов.
Тип container и, соответственно, объект Con, может быть любым STL-контейнером.
igor921
Заблокирован
01.06.2013, 16:51  [ТС]     Итераторы (пример использования итератора для шаблона, к примеру списка) #3
Спасибо, а можно если не тяжело в кратце описать сам контейнер Con в слечае списка... Точнее как там устроить итератор
Убежденный
Системный программист
 Аватар для Убежденный
14213 / 6228 / 988
Регистрация: 02.05.2013
Сообщений: 10,385
Завершенные тесты: 1
01.06.2013, 17:00     Итераторы (пример использования итератора для шаблона, к примеру списка) #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <list>
 
int main()
{
    std::list<int> List;
 
    List.push_back(123);
    List.push_back(456);
    List.push_back(789);
 
    for (std::list<int>::iterator it = List.begin(); it != List.end(); ++it)
    {
        std::cout << *it << std::endl;
    }
 
    return 0;
}
>123
>456
>789
igor921
Заблокирован
01.06.2013, 17:04  [ТС]     Итераторы (пример использования итератора для шаблона, к примеру списка) #5
Спасибо, я понял это...я имел ввиду что я буду разрабатывать свой шаблон, по типу листа...и как вот это там прикрутить
Убежденный
Системный программист
 Аватар для Убежденный
14213 / 6228 / 988
Регистрация: 02.05.2013
Сообщений: 10,385
Завершенные тесты: 1
01.06.2013, 17:47     Итераторы (пример использования итератора для шаблона, к примеру списка) #6
Цитата Сообщение от igor921 Посмотреть сообщение
я имел ввиду что я буду разрабатывать свой шаблон, по типу листа...и как вот это там прикрутить
А зачем ? Вы хотите использовать свой контейнер в стандартных алгоритмах STL ?
igor921
Заблокирован
02.06.2013, 12:46  [ТС]     Итераторы (пример использования итератора для шаблона, к примеру списка) #7
Да, именно так нужно
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
02.06.2013, 13:09     Итераторы (пример использования итератора для шаблона, к примеру списка) #8
Section 23.2 Container Requirements
Effective STL by Scott Meyers
The C++ Standard Library: A Tutorial and Reference by Nicolai Josutils
Убежденный
Системный программист
 Аватар для Убежденный
14213 / 6228 / 988
Регистрация: 02.05.2013
Сообщений: 10,385
Завершенные тесты: 1
02.06.2013, 13:30     Итераторы (пример использования итератора для шаблона, к примеру списка) #9
Если вкратце: Вам нужно определить свой класс итератора внутри своего класса-контейнера.
И в этом классе итератора (их будет несколько - iterator, const_iterator, reverse_iterator и
const_reverse_iterator) определить необходимые методы и typedef-ы. Как именно это делается -
зависит от особенностей работы контейнера. Пример реализации итератора можно найти в
книге "C++. Стандартная библиотека" (Н. Джосьютис). Не менее полезным будет заглянуть в
соответствующую главу Стандарта С++ про типы итераторов и требования к ним:
"C++ 2003 (ISO/IEC 14882, "24. Iterators Library").
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2013, 14:36     Итераторы (пример использования итератора для шаблона, к примеру списка)
Еще ссылки по теме:

C++ Использование потокового итератора для пользовательских обьектов
C++ Признак окончания потока для буферного итератора
Итераторы для новичков C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
igor921
Заблокирован
02.06.2013, 14:36  [ТС]     Итераторы (пример использования итератора для шаблона, к примеру списка) #10
Спасибо за помощь, буду разбираться)
Yandex
Объявления
02.06.2013, 14:36     Итераторы (пример использования итератора для шаблона, к примеру списка)
Ответ Создать тему
Опции темы

Текущее время: 03:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru