
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
Страницы: (78) « Первая ... 66 67 [68] 69 70 ... 77 78 ( Перейти к последнему сообщению ) |
Сообщ.
#1006
,
|
|
|
applegame, см. boost.range
Добавлено Совершенно необязательно все пихать в стандартную библиотеку. |
Сообщ.
#1007
,
|
|
|
Вообще, если внимательно прочитать предложение по range'ам в стандарте - там довольно существенные изменения в концепции. Т. е. это не просто предложение добавить range'и, а попытка (в очередной раз) пересмотреть некоторые подходы к проектированию интерфейсов в STL. В частности, продвигается вариант, что begin- и end-итераторы, передаваемые в алгоритм, не обязаны быть одинакового типа. Вводится понятие терминирующих итераторов, и т. п. |
![]() |
Сообщ.
#1008
,
|
|
Именно. Это всё равно, что разрешить перегрузку операторов для стандартных типов.
|
Сообщ.
#1009
,
|
|
|
Цитата Qraizer @ Тоже мне проблема. Вон руби-программисты живут с таким разрешением и что-то не слышно жалоб - https://ideone.com/DVVp6a Именно. Это всё равно, что разрешить перегрузку операторов для стандартных типов. |
![]() |
Сообщ.
#1010
,
|
|
Это не аргумент. Жить можно и не с такими косяками, живём же мы как-то с совершенно идиотским switch(). Вопрос в стоимости ошибок, которые сиими архитектурными решениями допускаются легко и непринуждённо.
|
Сообщ.
#1011
,
|
|
|
А в чем косяк у подхода в ruby?
|
Сообщ.
#1012
,
|
|
|
Цитата Qraizer @ Точно. Легко и непринужденно, по-ошибке переопределил оператор сложения у встроенного числового типа. Вопрос в стоимости ошибок, которые сиими архитектурными решениями допускаются легко и непринуждённо. ![]() |
![]() |
Сообщ.
#1013
,
|
|
Цитата Qraizer @ живём же мы как-то с совершенно идиотским switch(). А что в нем идиотского? Лично я вижу разве что обязательный break в case. |
Сообщ.
#1014
,
|
|
|
Цитата applegame @ Легко и непринужденно, по-ошибке переопределил оператор сложения у встроенного числового типа. Для встроенных типов перегружать операторы нельзя. |
Сообщ.
#1015
,
|
|
|
Цитата Kray74 @ Цитата applegame @ Легко и непринужденно, по-ошибке переопределил оператор сложения у встроенного числового типа. Для встроенных типов перегружать операторы нельзя. Наверное перед ответом стоит внимательно прочесть, на что отвечаете ![]() |
![]() |
Сообщ.
#1016
,
|
|
Цитата OpenGL @ Слабонервным не открывать. А что в нем идиотского? |
Сообщ.
#1017
,
|
|
|
Тогда уж что-то более классическое
![]() ![]() send(to, from, count) register short *to, *from; register count; { register n = (count + 7) / 8; switch(count % 8) { case 0: do { *to = *from++; case 7: *to = *from++; case 6: *to = *from++; case 5: *to = *from++; case 4: *to = *from++; case 3: *to = *from++; case 2: *to = *from++; case 1: *to = *from++; } while(--n > 0); } } На этой же особенности можно делать простые "сопрограммы" без стека, см. например boost.asio: stackless coroutines boost.asio: coroutine |
Сообщ.
#1019
,
|
|
|
Цитата applegame @ А потом приходит новый разработчик и тратит совсем не чуть-чуть времени, чтобы разобраться во всей этой ахинеи.Тоже мне проблема. Вон руби-программисты живут с таким разрешением и что-то не слышно жалоб - https://ideone.com/DVVp6a Цитата OpenGL @ А я не вижу обязательности break. Зато вижу проблему в обязательных { } если хочется создать переменную внутри блока case, ну и вторую проблему, что работает только с примитивными типами. А что в нем идиотского? Лично я вижу разве что обязательный break в case. Добавлено Цитата D_KEY @ Тогда уж что-то более классическое ![]() ![]() send(to, from, count) register short *to, *from; register count; { register n = (count + 7) / 8; switch(count % 8) { case 0: do { *to = *from++; case 7: *to = *from++; case 6: *to = *from++; case 5: *to = *from++; case 4: *to = *from++; case 3: *to = *from++; case 2: *to = *from++; case 1: *to = *from++; } while(--n > 0); } } На этой же особенности можно делать простые "сопрограммы" без стека, см. например boost.asio: stackless coroutines boost.asio: coroutine Очень напоминает раскрутку циклов в асме. На спектруме еще делал подобные функции для быстрого копирования памяти. |
![]() |
Сообщ.
#1020
,
|
|
Это вы ещё в сырцы Дума не заглядывали. Знаете, чем он занимается, когда ещё в текстовом экране точки рисует? Много точек. Строит свой код в памяти в виде кучи функций, отрисовывающих то ли спрайты, то ли текстуры в нужных масштабах, каждая в своём и каждая без переходов и условий. Просто в нужном месте вызывается нужная функция, в зависимости от нужного масштаба.
|