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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Иттераторы - C++

29.07.2011, 09:09. Просмотров 1888. Ответов 42
Метки нет (Все метки)

Я в принципе понимаю, что такое иттератор, но нужно чёткое определение. И как формулировать, что такое цикл с иттератором и чем он отличается от цикла со счётчиком? И как точно пишется слово "иттератор" по-русски и по-английски?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2011, 09:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Иттераторы (C++):

Иттераторы - C++
Никогда не пользовался, а теперь хочу разобраться. Запостите, пожалуйста ответы на вопросы: 1. Что такое иттераторы? 2. Как их делать? ...

Инкапсуляция, иттераторы, абстрактные списки на С - C++
Сразу подчеркиваю, что реализовать программу надо на С, а не на С++, что, собственно и портит всю малину. Задание следующие:...

Иттераторы - C++
Никогда не пользовался, а теперь хочу разобраться. Запостите, пожалуйста ответы на вопросы: 1. Что такое иттераторы? 2. Как их делать? ...

Инкапсуляция, иттераторы, абстрактные списки на С - C++
Сразу подчеркиваю, что реализовать программу надо на С, а не на С++, что, собственно и портит всю малину. Задание следующие:...

Иттераторы - C++
Никогда не пользовался, а теперь хочу разобраться. Запостите, пожалуйста ответы на вопросы: 1. Что такое иттераторы? 2. Как их делать? ...

Инкапсуляция, иттераторы, абстрактные списки на С - C++
Сразу подчеркиваю, что реализовать программу надо на С, а не на С++, что, собственно и портит всю малину. Задание следующие:...

Иттераторы - C++
Никогда не пользовался, а теперь хочу разобраться. Запостите, пожалуйста ответы на вопросы: 1. Что такое иттераторы? 2. Как их делать? ...

Инкапсуляция, иттераторы, абстрактные списки на С - C++
Сразу подчеркиваю, что реализовать программу надо на С, а не на С++, что, собственно и портит всю малину. Задание следующие:...

Иттераторы - C++
Никогда не пользовался, а теперь хочу разобраться. Запостите, пожалуйста ответы на вопросы: 1. Что такое иттераторы? 2. Как их делать? ...

Инкапсуляция, иттераторы, абстрактные списки на С - C++
Сразу подчеркиваю, что реализовать программу надо на С, а не на С++, что, собственно и портит всю малину. Задание следующие:...

Иттераторы - C++
Никогда не пользовался, а теперь хочу разобраться. Запостите, пожалуйста ответы на вопросы: 1. Что такое иттераторы? 2. Как их делать? ...

Инкапсуляция, иттераторы, абстрактные списки на С - C++
Сразу подчеркиваю, что реализовать программу надо на С, а не на С++, что, собственно и портит всю малину. Задание следующие:...

Иттераторы - C++
Никогда не пользовался, а теперь хочу разобраться. Запостите, пожалуйста ответы на вопросы: 1. Что такое иттераторы? 2. Как их делать? ...

Инкапсуляция, иттераторы, абстрактные списки на С - C++
Сразу подчеркиваю, что реализовать программу надо на С, а не на С++, что, собственно и портит всю малину. Задание следующие:...

Иттераторы - C++
Никогда не пользовался, а теперь хочу разобраться. Запостите, пожалуйста ответы на вопросы: 1. Что такое иттераторы? 2. Как их делать? ...

Инкапсуляция, иттераторы, абстрактные списки на С - C++
Сразу подчеркиваю, что реализовать программу надо на С, а не на С++, что, собственно и портит всю малину. Задание следующие:...

Иттераторы - C++
Никогда не пользовался, а теперь хочу разобраться. Запостите, пожалуйста ответы на вопросы: 1. Что такое иттераторы? 2. Как их делать? ...

Инкапсул

Иттераторы - C++
Никогда не пользовался, а теперь хочу разобраться. Запостите, пожалуйста ответы на вопросы: 1. Что такое иттераторы? 2. Как их делать? ...

Инкапсуляция, иттераторы, абстрактные списки на С - C++
Сразу подчеркиваю, что реализовать программу надо на С, а не на С++, что, собственно и портит всю малину. Задание следующие:...


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

Или воспользуйтесь поиском по форуму:
42
solar_wind
757 / 748 / 42
Регистрация: 06.07.2009
Сообщений: 2,970
Завершенные тесты: 1
29.07.2011, 09:14 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от taras atavin Посмотреть сообщение
чем он отличается от цикла со счётчиком?
Способом доступа к данным, для работы с которыми сделан цикл.


Цитата Сообщение от taras atavin Посмотреть сообщение
И как формулировать, что такое цикл с иттератором
Итератор (от англ. iterator) — объект, позволяющий программисту перебирать все элементы коллекции без учёта особенностей её реализации. Итератор иногда также называют курсором, особенно если речь идет о базе данных. В простейшем случае итератором в низкоуровневых языках является указатель.
3
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.07.2011, 09:18 #3
Цитата Сообщение от vitaly1981 Посмотреть сообщение
Способом доступа к данным, для работы с которыми сделан цикл
способ доступа тот же что и у []
0
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
29.07.2011, 09:19 #4
taras atavin, есть паттерн Итератор в книжке Банды четырех. Еще у Джефа Элджера про курсоры много есть.
0
solar_wind
757 / 748 / 42
Регистрация: 06.07.2009
Сообщений: 2,970
Завершенные тесты: 1
29.07.2011, 09:25 #5
Maxwe11, Если подходить с точки зрения доступа к данным на низком уровне, то в некоторых случаях они совпадают, но далеко не всегда.
На уровне непосредственно интерфейса, доступ по счетчику и доступ через объект это разные вещи. Счетчик, как минимум, подразумевает наличие порядкового номера каждой части данных, доступ через объект вообще абстрагируется от конкретного представления данных и не накладывает ограничения по наличию каких то свойств порядка.
1
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
29.07.2011, 10:41  [ТС] #6
Допустимы ли такие определения: "Итератором называется счётчик цикла специального типа, который может быть использован только в заголовке цикла и для последовательного доступа к элементам некоторого контейнера без раскрытия его структуры и может меняться только с единичным шагом", "Циклом с итератором называется цикл последовательного перебора элементов некоторого контейнера без раскрытия его структуры с имеющим строго единичный шаг и называемым итератором счётчиком специального типа, который может быть использован только в заголовке такого цикла и для последовательного доступа к элементам контейнера"?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
29.07.2011, 10:44 #7
taras atavin, "Циклом с итератором называется цикл со счётчиком специального типа, который может быть использован только в заголовке и для последовательного доступа к элементам некоторого контейнера без раскрытия его структуры и может меняться только с единичным шагом"?

Не-а. Итератор произвольного доступа никто не мешает переместить на сколько нужно элементов вперед.
Итератор - это концепция для обхода элементов контейнера, не раскрывая сущность контейнера и тип данных внутри него.
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
29.07.2011, 10:52  [ТС] #8
Цитата Сообщение от ForEveR Посмотреть сообщение
Итератор произвольного доступа
То есть? Мне казалось, что итератор предназначен для последовательного, а не случайного перебора.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
29.07.2011, 10:55 #9
taras atavin, На вектор посмотрите ради интереса)
0
solar_wind
757 / 748 / 42
Регистрация: 06.07.2009
Сообщений: 2,970
Завершенные тесты: 1
29.07.2011, 10:57 #10
taras atavin, Ну представь корзину в которой валяется множество мячей, тебе нужно их все выбрать. Тебе каждый раз дают какой то из мячей, причем при разных обходах совершенно нет гарантии что порядок будет тот же. Вот это итератор. Говорить тут вообще о каком то единичном или не единичном шаге впринципе некорректно, потому что тут шагов нет, есть набор элементов, которые тебе дают пока они все не закончатся.
1
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
29.07.2011, 10:57  [ТС] #11
А так: "Итератором называется счётчик цикла специального типа, который может быть использован только для доступа к элементам некоторого контейнера без раскрытия его структуры и в заголовке цикл перебора всех элементов этого контейнера", "Циклом с итератором называется цикл перебора всех элементов некоторого контейнера без раскрытия его структуры с называемым итератором счётчиком специального типа, который может быть использован только в заголовке такого цикла и для доступа к элементам перебираемого контейнера"?
0
solar_wind
757 / 748 / 42
Регистрация: 06.07.2009
Сообщений: 2,970
Завершенные тесты: 1
29.07.2011, 11:02 #12
taras atavin, ну можно и так выразится, единственное "счетчик цикла"....итератор вообщем то не является как таковым счетчиком....
А чем стандартное определение итератора не устраивает?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
29.07.2011, 11:02 #13
taras atavin, Почему итератор это счетчик цикла?
Ну где тут счетчик цикла, а?

C++
1
2
3
4
5
6
7
std::vector<int> vec{1,2,3,4,5,6};
std::vector<int>::iterator iter = std::find(vec.begin(), vec.end(), 4);
if(iter != vec.end())
{
   vec.erase(iter);
}
std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, "\n"));
0
zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
29.07.2011, 11:53 #14
Можно сформулировать так
Итераторы - это объекты, которые в той или иной степени действуют подобно указателям. Они позволяют циклически опрашивать содержимое контейнера, практически так же, как это делается с помощью указателя при циклическом опросе элементов массива
Добавлено через 16 минут
Цитата Сообщение от taras atavin Посмотреть сообщение
Мне казалось, что итератор предназначен для последовательного, а не случайного перебора.
Существует 5 типов итераторов: Произвольного доступа, Двунаправленные(обеспечивают инкрементное и декрементное перемещение), Однонаправленные(только инкрементное перемещение), Входные(только инкрементное перемещение) и Выходные(только инкрементное)..

Первые три типа позволяют сохранять и считывать элементы контейнера. Входные только считывают, выходные - только записывают.
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
29.07.2011, 13:18 #15
Страуструп 1ой из причин использования итераторов заместо [] называет большую переносимость, при изменении к примеру vector на list
0
29.07.2011, 13:18
Ответ Создать тему
Опции темы

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