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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
igor921
Заблокирован
#1

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

01.06.2013, 14:23. Просмотров 2764. Ответов 9
Метки нет (Все метки)

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

Написание итератора для списка - C++
Приветствую. Вот собственно реализация списка: #include "stdafx.h" #include <iostream> #include <cstring> using namespace std; ...

Реализовать итераторы для списка - C++
Нужно реализовать итераторы для списка вида: p++ постфиксный инкремент q-p q-это указатель,который стоит справа от p. то есть q-p...

Реализовать итераторы begin() и end() для списка - C++
Есть список. и операции для него 1)разыменование 2)инкремент (префиксный и постфиксный) 3) == 4) != Для того,чтобы проверить...

Пример использования генератора случайных чисел для демонстрации динамического полиморфизма - C++
Пример использования генератора случайных чисел для демонстрации динамического полиморфизма.Я в шоке не могу не где найти может тут кто...

Удаление елемента списка с использованием итератора. STL - C++
Надо удалить из списка елементы, значение которых входит в некий диапазон. Я хочу использовать для етого итератор(если такое вообще...

Исправить ошибку компиляции "для использования класса шаблон требуется список аргументов шаблона" - C++
Решил создать класс List для задания двусвязного списка, и в самом начале компилятор начал ругаться на шаблон класса: error C2955:...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Убежденный
Системный программист
Эксперт С++
15551 / 7059 / 1114
Регистрация: 02.05.2013
Сообщений: 11,468
Завершенные тесты: 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-контейнером.
2
igor921
Заблокирован
01.06.2013, 16:51  [ТС] #3
Спасибо, а можно если не тяжело в кратце описать сам контейнер Con в слечае списка... Точнее как там устроить итератор
0
Убежденный
Системный программист
Эксперт С++
15551 / 7059 / 1114
Регистрация: 02.05.2013
Сообщений: 11,468
Завершенные тесты: 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
1
igor921
Заблокирован
01.06.2013, 17:04  [ТС] #5
Спасибо, я понял это...я имел ввиду что я буду разрабатывать свой шаблон, по типу листа...и как вот это там прикрутить
0
Убежденный
Системный программист
Эксперт С++
15551 / 7059 / 1114
Регистрация: 02.05.2013
Сообщений: 11,468
Завершенные тесты: 1
01.06.2013, 17:47 #6
Цитата Сообщение от igor921 Посмотреть сообщение
я имел ввиду что я буду разрабатывать свой шаблон, по типу листа...и как вот это там прикрутить
А зачем ? Вы хотите использовать свой контейнер в стандартных алгоритмах STL ?
0
igor921
Заблокирован
02.06.2013, 12:46  [ТС] #7
Да, именно так нужно
0
stima
473 / 322 / 30
Регистрация: 22.03.2011
Сообщений: 1,047
Завершенные тесты: 2
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
1
Убежденный
Системный программист
Эксперт С++
15551 / 7059 / 1114
Регистрация: 02.05.2013
Сообщений: 11,468
Завершенные тесты: 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").
1
igor921
Заблокирован
02.06.2013, 14:36  [ТС] #10
Спасибо за помощь, буду разбираться)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2013, 14:36
Привет! Вот еще темы с ответами:

Подскажите кросспратформенный пример для вывода списка файлов - C++
Есть ли какой нибудь кроссплатформенный пример для вывода списка файлов в директории C++.

Привести пример реализации любого линейного списка списка с использованием лишь структур - C++
Буду благодарен, если кто-нибудь сможет привести пример реализации любого линейного списка списка с использованием лишь структур (то есть...

Пример использования спецификатора volatile - C++
В приложенной картинке (из книги Г.С. Шилдта по C++) есть пример использования спецификатора volatile. Есть три вопроса. Первый: что...

Пример использования функции extern - C++
Доброго времени суток форумчане! Пытаюсь закрыть долг по программированию, но препод очень жесткий и просто так ставить ставить зачет мне...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.06.2013, 14:36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru