|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.11.2015, 20:06 | #1 |
Форумчанин
Регистрация: 29.06.2013
Сообщений: 132
|
Причина существования индексаторов
Проштудировал я тему индексаторов. В принципе, понял как с ними работать. Но... не понятно одно. Зачем они нужны?
Ведь это тот же массив.. Какой резон выделять его в отдельный класс? |
01.11.2015, 20:54 | #2 |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
Массивы оно всё.
|
02.11.2015, 17:42 | #3 |
Форумчанин
Регистрация: 29.06.2013
Сообщений: 132
|
А адекватный ответ можно ожидать?
|
02.11.2015, 18:49 | #4 |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
А что тут не адекватно? вы думаете в листах и т.п. что то используеться оссобенное а не массивы?
|
02.11.2015, 19:25 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Ну представь себе, что у тебя не массив, в котором элементы идут один за другим, а некий список массивов. Допустим ты выделяешь память слябами (особыми блоками кратность которых расчитывается по определенным формулам), а не сразу для всех элементов. Тогда получается что индексация на стыке слябов рвется, поскольку последний элемент первого сляба и первый элемент следующего не лежат в памяти рядом. Механизм итератора это учитывает, и переводит свой указатель на следующий элемент где бы он не находился. Поскольку один сляб знает о местоположении другого, он подсказывает итератору на какую ячейку перескочить. Аналогию можно подчерпнуть тут: https://ru.wikipedia.org/wiki/%D0%AD...B5%D0%BD%D1%82. Механизм позиционирования в файле - это итератор. Хотя сам файл и хранится фрагментами, указатель на позицию внутри файла при чтении перебегает так, как будто это одномерный непрерывный массив байт. Такую прозрачность обеспечивают именно итераторы, но на уровне FS. Короче говоря: Итераторы нужны для решения проблем фрагментации, которая как ни странно обеспечивает оптимальное распределение памяти для ПО.
I'm learning to live...
|
|
02.11.2015, 19:47 | #6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
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. |
02.11.2015, 20:07 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
02.11.2015, 20:10 | #8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну я и привел.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
02.11.2015, 23:48 | #9 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
по большей части синт сахар.
так же как и С++ operator[] но так удобнее обычно работать. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
03.11.2015, 21:55 | #10 | |
Форумчанин
Регистрация: 29.06.2013
Сообщений: 132
|
Цитата:
Но интересно, какой резон от них? Их же придумали не потому, что это просто массив и задача та же самая и разницы нет ни какой. Я лично вижу это так: при работе лругих классов с массивом канкретного класса не совсем удобно в плане синтаксиса обращаться к массиву другого класса. Но если сделать индексатор, то можно работать с ним напрямую с любого класса проекта, что есс-но удобнее. Я прав? Или есть ещё какие-то причины? Ну и как заметил Stilet, если значения передаваемые в массив рассчитываются по определённым не линейным формулам, то это как удобство упаковки, верно? Последний раз редактировалось hoz; 03.11.2015 в 22:07. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверка существования записи | 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 |