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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2015, 20:06   #1
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию Причина существования индексаторов

Проштудировал я тему индексаторов. В принципе, понял как с ними работать. Но... не понятно одно. Зачем они нужны?
Ведь это тот же массив.. Какой резон выделять его в отдельный класс?
hoz вне форума Ответить с цитированием
Старый 01.11.2015, 20:54   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Массивы оно всё.
come-on вне форума Ответить с цитированием
Старый 02.11.2015, 17:42   #3
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

А адекватный ответ можно ожидать?
hoz вне форума Ответить с цитированием
Старый 02.11.2015, 18:49   #4
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

А что тут не адекватно? вы думаете в листах и т.п. что то используеться оссобенное а не массивы?
come-on вне форума Ответить с цитированием
Старый 02.11.2015, 19:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Зачем они нужны?
Итераторы? Если я правильно понял - речь о указателе на элемент списка или массива?
Ну представь себе, что у тебя не массив, в котором элементы идут один за другим, а некий список массивов. Допустим ты выделяешь память слябами (особыми блоками кратность которых расчитывается по определенным формулам), а не сразу для всех элементов. Тогда получается что индексация на стыке слябов рвется, поскольку последний элемент первого сляба и первый элемент следующего не лежат в памяти рядом. Механизм итератора это учитывает, и переводит свой указатель на следующий элемент где бы он не находился. Поскольку один сляб знает о местоположении другого, он подсказывает итератору на какую ячейку перескочить. Аналогию можно подчерпнуть тут: https://ru.wikipedia.org/wiki/%D0%AD...B5%D0%BD%D1%82.
Механизм позиционирования в файле - это итератор. Хотя сам файл и хранится фрагментами, указатель на позицию внутри файла при чтении перебегает так, как будто это одномерный непрерывный массив байт. Такую прозрачность обеспечивают именно итераторы, но на уровне FS.

Короче говоря: Итераторы нужны для решения проблем фрагментации, которая как ни странно обеспечивает оптимальное распределение памяти для ПО.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.11.2015, 19:47   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Итераторы?
https://msdn.microsoft.com/ru-ru/library/6x16t2tx.aspx


А про итераторы по-моему немного странный пример. Вроде ж основной их смысл в предоставлении унифицированного интерфейса для работы с коллекциями. Например чтоб не писать отдельную функцию сортировки для массива, List и MySuperArray.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 02.11.2015 в 19:55.
Alex11223 вне форума Ответить с цитированием
Старый 02.11.2015, 20:07   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
немного странный пример.
Приведи пример лучше )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.11.2015, 20:10   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну я и привел.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.11.2015, 23:48   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

по большей части синт сахар.
так же как и С++ operator[]

но так удобнее обычно работать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.11.2015, 21:55   #10
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
А что тут не адекватно? вы думаете в листах и т.п. что то используеться оссобенное а не массивы?
Вопрос был касательно целесообразности применения оных сущностей, а не массивы это или не массивы. То что это массив и так понятно. Я ж написал выше, что с синтаксисом и вообще в плане работы с ними понял..
Но интересно, какой резон от них? Их же придумали не потому, что это просто массив и задача та же самая и разницы нет ни какой.
Я лично вижу это так: при работе лругих классов с массивом канкретного класса не совсем удобно в плане синтаксиса обращаться к массиву другого класса. Но если сделать индексатор, то можно работать с ним напрямую с любого класса проекта, что есс-но удобнее. Я прав? Или есть ещё какие-то причины?
Ну и как заметил Stilet, если значения передаваемые в массив рассчитываются по определённым не линейным формулам, то это как удобство упаковки, верно?

Последний раз редактировалось hoz; 03.11.2015 в 22:07.
hoz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка существования записи NikkMih C/C++ Базы данных 3 19.10.2011 11:26
Проверка существования компонента _-Re@l-_ Общие вопросы Delphi 3 29.12.2010 18:59
условие существования записи TaTT DoGG SQL, базы данных 8 29.04.2010 17:20
проверка существования окна Shade Win Api 3 22.07.2007 17:56