0xd34df00d
24.01.2013 13:38 Azoth_primary
Ух ты, только что пришло в голову, что можно std::min применять и на итераторах, например, std::copy(start, std::min(start + count, scores.end()), ...);
Мелочь, а приятно.
Recommended by:
@pooq: моча съела говно
Тебя Игно покусал?
Чо.
Странные вещи говоришь просто :) Обычно более упоротое
Ну не все же хуем орехи колоть.
ебать костыли
Че.
мне лень опять писать про неудачный дизайн плюсовых итераторов.
для затравки, посмотри на вот этот протокол итерации:
> take 5 [1,2,3]
=> [1,2,3]
— и подумай, почему ему такой min попросту не нужен.
Потому что у take правильно написана база индукции. А написана она правильно потому, что у take есть доступ к контексту — можно заматчить последний элемент. В плюсах же нет доступа, и соснули.
ПРОТОКОЛ ИТЕРАЦИИ, сука, где ты в процессе итерации нашёл индукцию нахуй? абстрактнее смотри
Ну ты и лох, пидр. Я же уже написал.
и никакого контекста там нет, есть просто санк типа [a], который можно дёрнуть — и в ответ получить либо следующий элемент, либо конец списка.
Что я и написал.
А у итераторов нет понятия atEnd().
вот этот санк и является абстрактным итератором (а он и есть, по сути, значением списка в х-ле)
У меня рука не поворачивается их сравнивать вот так явно в открытую. Постыдился бы.
Потому что санк в хаскеле — умный по определению, а итератор — считай, указатель.
а я вижу глубинное сходство. Сюда же питоновский протокол итерирования отлично вмещается (надеюсь, ты понимаешь, о чём я).
Алсоу. Скажем, плюсовый рейндж — пара итераторов, в простейшем случае пара указателей. Что мешает инкапсулировать их оба в ОДИН объект? Который сам будет знать, где он заканчивает итерацию (потому что знает конец рейнджа), и сам это будет решать внутри метода derg(). Итератор связанного списка проще становятся. Инкапсуляция поведения лучше становится (ни одна хуила снаружи не знает, что нужно КОНЕЦ ИТЕРАЦИИ делать сравнением значений итераторов). Всё становится лучше и проще.
Сразу видно линуксоида. Спермоблядки пишут (std::min).
В D александреска так и сделал. Но D никому не нужен, т.к. есть говнолегаси на крестиках.
и правильно сделал же!
Че.
в какой-то из древних штудий std::min — макрос.
А, клево.
Даже в десятке включив определенные хэдеры из WinAPI получим макросы min и max. Лень гуглить, че за хэдеры, но я попадался уже.