thedeemon: (office)
[personal profile] thedeemon
Микола, бачив як С++ники xs.writeln пишуть?
std::copy(std::begin(xs), std::end(xs), std::ostream_iterator<unsigned char>(std::cout));
std::cout << std::endl;

навеяно

Date: 2015-10-16 07:18 am (UTC)
From: [identity profile] yauheni akhotnikau (from livejournal.com)
Грядущий будет 17-й.

Вообще, этому приему уже лет двадцать, наверное. Он точно доступен с C++98. Смысл в том, что если есть произвольный поддиапазон [a,b), то его содержимое можно отправить в cout посредством поэлементного копирования, где вместо "приемника" задается не непосредственно cout, а завязанный на cout итератор.

В принципе, любой может написать для себя шаблон writeln, который будет получать аргументом [a,b) и прятать copy у себя внутри. Но в стандартной библиотеке такой функции нет.

Date: 2015-10-16 08:21 am (UTC)
From: [identity profile] nivanych.livejournal.com
Да я не про этот приём.
А про гипотетические новые красивые приёмы! ;-)

Date: 2015-10-16 08:32 am (UTC)
From: [identity profile] yauheni akhotnikau (from livejournal.com)
В стандартной библиотеке C++ очень много чего нет. Как и в самом языке. Насколько я понимаю, до C++11 не было возможности написать шаблонную функцию writeln, которой можно было бы пользоваться вот так: writeln(cout,xs). В C++11, насколько я понимаю, это уже можно сделать даже без танцев с бубнами.

Date: 2015-10-16 09:12 am (UTC)
From: [identity profile] nivanych.livejournal.com
Воот! А некоторые тут поклёп устраивают, показывая всякие некрасивые варианты!!

Date: 2015-10-16 09:15 am (UTC)
From: [identity profile] yauheni akhotnikau (from livejournal.com)
У этого варианта своя красота, доступная только просвященным C++никам! :)

Date: 2015-10-16 09:17 am (UTC)
From: [identity profile] nivanych.livejournal.com
Закончил много писать на C++ я уже больше 10-ти лет назад.
Такшта, нифига я не посвящённый уже ;-)

Date: 2015-10-16 09:22 am (UTC)
From: [identity profile] yauheni akhotnikau (from livejournal.com)
Теперешний C++ уже сильно другой :)
Сейчас я бы уже сам на C++98 не стал бы писать. Разве что за очень большие деньги.

Date: 2015-10-16 10:01 am (UTC)
From: [identity profile] nivanych.livejournal.com
Но другой хоть в хорошем смысле этого слова? ;-)

Date: 2015-10-16 10:08 am (UTC)
From: [identity profile] yauheni akhotnikau (from livejournal.com)
Боюсь, он хорош только для любителей C++. Для тех, кого от C++ тошнит, принципиально ничего не изменилось :)

Date: 2015-10-16 10:15 am (UTC)
From: [identity profile] nivanych.livejournal.com
Нувооот...
А я уж думал — всё исправилось, стало хорошим и можно обратно с хаскеля на него переходить! ;-)

Date: 2015-10-16 10:33 am (UTC)
From: [identity profile] yauheni akhotnikau (from livejournal.com)
Нет, все тоже самое: сборки мусора нет, совместимость с C все еще поддерживается, повисшие указатели, выходы за пределы массивов, повторное освобождение и расстрел памяти, разные уровни поддержки стандартов в разных компиляторов, куча несовместимых между собой систем сборки, отсутствие общего менеджера пакетов... Все как всегда :)

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 31st, 2026 12:30 am
Powered by Dreamwidth Studios