Size: a a a

Programming Offtop

2020 March 23

AM

Andrew Mikhaylov in Programming Offtop
Декар
О! Ещё вопрос к тем, кто пишет код. Почему в современном обществе любят итераторы и не любят проход по контейнеру по индексу? В чём смысл?
Потому что итераторы -- абстракция, которую можно сделать для бОльшего количества коллекций, чем предоставляющих random access хранящих всё одним блоком памяти.
источник

Д

Декар in Programming Offtop
источник

Д

Декар in Programming Offtop
Vladimir Petrakovich
А зачем работать напрямую с индексами, если есть итераторы?
Ну главный недостаток это копирование и больше кода
источник

Kd

Konstantin dmz9 in Programming Offtop
может это оптимизация просто
источник

DE

Denis Egorov in Programming Offtop
Декар
Ну главный недостаток это копирование и больше кода
больше какого кода?)
источник

VP

Vladimir Petrakovich in Programming Offtop
Декар
Ну главный недостаток это копирование и больше кода
Про больше кода - зависит от языка. А какое копирование?
Похоже, что необходим контекст в виде ЯП.
источник

AM

Andrew Mikhaylov in Programming Offtop
Andrew Mikhaylov
Потому что итераторы -- абстракция, которую можно сделать для бОльшего количества коллекций, чем предоставляющих random access хранящих всё одним блоком памяти.
А для тех, что не основаны на одном блоке памяти (связанный список в голову приходит) доступ по индексу для последовательного прохода по коллекции дороже.
источник

DE

Denis Egorov in Programming Offtop
Итератор позволяет пройтись по абстрактному контейнеру
источник

AM

Andrew Mikhaylov in Programming Offtop
Ну и да, не везде он есть вообще.
источник

DE

Denis Egorov in Programming Offtop
ты можешь принять в функцию итератор
источник

DE

Denis Egorov in Programming Offtop
и пробежаться по данным контейнера
источник

AM

Andrew Mikhaylov in Programming Offtop
По любой структуре на бинарных деревьях тоже можно пройтись итератором, но индексов там уже нет.
источник

Д

Декар in Programming Offtop
Andrew Mikhaylov
Потому что итераторы -- абстракция, которую можно сделать для бОльшего количества коллекций, чем предоставляющих random access хранящих всё одним блоком памяти.
Это как раз понятно. Но вот к примеру в школе 21 не разрешают в С пользоваться стандартной библиотекой (что понятно) и, почему-то for
источник

AM

Andrew Mikhaylov in Programming Offtop
В сях есть итераторы, я что-то пропустил?
источник

ML

Mikhail Levchenko in Programming Offtop
Декар
О! Ещё вопрос к тем, кто пишет код. Почему в современном обществе любят итераторы и не любят проход по контейнеру по индексу? В чём смысл?
Дядя, вам звонили из 2000ого, просили вернуть набросы
источник

Д

Декар in Programming Offtop
Denis Egorov
больше какого кода?)
Написанного программистом. Итератор для простого вектора или массива более громоздок, особенно если надо содержимое массива менять
источник

VP

Vladimir Petrakovich in Programming Offtop
Andrew Mikhaylov
В сях есть итераторы, я что-то пропустил?
pointer++ - так-то вполне итератор, в случае с массивом)
источник

AM

Andrew Mikhaylov in Programming Offtop
Vladimir Petrakovich
pointer++ - так-то вполне итератор, в случае с массивом)
Условно, конечно, да, но я не слышал, чтобы об этом как об итераторах говорили :)
источник

VP

Vladimir Petrakovich in Programming Offtop
Andrew Mikhaylov
Условно, конечно, да, но я не слышал, чтобы об этом как об итераторах говорили :)
Ну я думаю, речь про STL или что-нибудь в таком духе
источник

I

Ilmir in Programming Offtop
Andrew Mikhaylov
В сях есть итераторы, я что-то пропустил?
Да, разумеется
for (element_t* element = start(collection); element; element = next(collection, element)
источник