Войти
ПрограммированиеФорумОбщее

Андрей Александреску убивает итераторы (комментарии) (2 стр)

Страницы: 1 2 3 Следующая »
#15
17:18, 21 сен. 2009

Chipmunk
> Я вот теперь и думаю, внесут ли что-то такое в STL? Если да - то надо уже
> сейчас проектировать с этим "in mind"...
Загляни в Boost.Range,
http://www.boost.org/doc/libs/1_40_0/libs/range/index.html

и попутно в Boost.StringAlgo
http://www.boost.org/doc/libs/1_40_0/doc/html/string_algo.html

#16
17:19, 21 сен. 2009

Iskander
Не в курсе где можно почитать, я делаю свои выводы на основе презентации, может быть это мои домыслы но в презентации чётко сказано про возожность накладывать фильтры на ранж, а Select этот - что если не фильтр? Врядли конечно синтаксис будет таким как в твоём примере, скорее всего ифльтр будет функцтором, хотя может там чё-нить нашаманят с макросами так что будет похоже.

#17
17:38, 21 сен. 2009

Phoenics
> Врядли конечно синтаксис будет таким как в твоём примере,
Синтаксис вообще может быть любым, это несущественно. Существенно другое. Если содержимое региона вычисляется сразу для всех, сейчас неважно, отложенные эти вычисления или нет, главное что мы получаем фактически другой контейнер, (судя по ссылкамkvakvs'а регион, ну или как там по русски будет,  и контейнер это близкие вещи), содержащий условно говоря ссылки на элементы нашего исходного контейнера.
Если же во время пробега по foreach на каждый элемент контейнера вызывается функтор для сравнения, это уже немного другое, чуть менее гибкое.

#18
18:38, 21 сен. 2009

Ghost2
Проектировать то что надо, а что?

kvakvs
Я в курсе дела по бусту, но у нас свои внутренние правила.


О фильтрах в презентации ничего очень хорошего нет.

#19
19:08, 21 сен. 2009

Chipmunk
В STL оно если когда-то и доедет то только с выпуском C++0x, много вещей из буста я там нахожу в ихних проектах std библиотек. Из упоминаний range, я нашёл только http://en.wikipedia.org/wiki/C++0x#Range-based_for-loop так что ещё может и не успеть доехать в ближайшем релизе.

Внутренние правила, что буст смотреть можно а трогать низя? А что мешает взять ряд нужных заголовков из буста и пользоваться, не подключая весь буст? Если пойдёт дело - копируй нужные классы или целиком включай в кодбейс проекта, не пойдёт - удалишь.

#20
19:26, 21 сен. 2009

Видео с конференции: http://blip.tv/file/2432106

#21
0:27, 22 сен. 2009

Chipmunk

> Проектировать то что надо, а что?
Ты всерьез считаешь, что итераторы или рейнджы (или индексы в массивах) это уровень проектирования?

#22
19:35, 22 сен. 2009

Ghost2
Давай не будем тут спорить. Со мной обычно неприятно спорить. )

По крайней мере, в Design Patterns (GoF) написано, что люди используют "Design Pattern: Iterator (Behavioural)". "design" переводят как "проектирование".

#23
19:57, 22 сен. 2009

Ага, а Modern Design переводят как "современное проектирование", когда по смыслу - "современные вещества".

#24
20:05, 22 сен. 2009

Тут я не виноват, я сам нэрусский. )

#25
20:32, 22 сен. 2009

Надо было написать так: вещества

Прошло более 1 года
#26
15:47, 16 ноя. 2010

Phoenics
> В кратце автор перечисляет ряд недостатков итераторов и предлагает шире
> использовать range-ы. Так же он поясняет ряд преимуществ которые можно с этого
> получить. Мне например понравилась возможность связывать ранжи в списки, и
> возможность создавать бесконечные ранжи. В общем любопытно. Что такое сами
> range-ы и как они реализованы я пока не разбирался и не искал информацию по
> этому поводу, но думаю что это что-то типа итератора хранящего либо имеющего
> доступ к информации обо всех элементах в виде упорядоченного множества,
> благодаря чему появляются возможности не только ходить от одного элемента к
> другому но и делить/сливать эти множества, использовать вместо элементов
> функции, например для получения случайного значения или создания нового
> объекта, возможности накладывать фильтры на добавляемые/извлекаемые из рэнджа
> значения, возможность произвольно менять праивла обхода, например сделать рэндж
> зацикленным или нет, выбирать элементы в случайном порядке, ходить вперёд и
> назад без создания реверсивных итераторов, обходить деревья вглубь и т.п.
> возможности.
> Так же среди преимуществ он отмечает более простой синтаксис, и то что рэнж не
> зависит например от типа контейнера, а только от типа элементов на которые он
> ссылается. Т.о. можно использовать рэнжи от разных контейнеров с одинаковыми
> элементами единообразно, например связывать их в списки, сделать так что бы
> какой-нибудь алгоритм например получал на вход рэнж одного типа контейнера а
> результаты складывал в рэнж другого типа контейнера.


Нормальные люди для этого придумали LINQ.

#27
16:07, 16 ноя. 2010

Александреску перегрелся, лучше бы занялся "концептами" и довел бы их до ума.

Ну или придумали как лучше, сделать модульность, когда интерфейс разделен на публичный и внутрений, а то техники в виде impl это уродство.

#28
16:11, 16 ноя. 2010

((NightmareZ))
>
> Нормальные люди для этого придумали LINQ.
Ага и что теперь всем не нормальным С++'никам переходить на "нормальный" сшарпь?

#29
16:13, 16 ноя. 2010

Ghost2
> Ага, а Modern Design переводят как "современное проектирование", когда по
> смыслу - "современные вещества".
Ахаха лол %) Повеселил

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.