
Dmitry
05.08.2018
10:14:39
Расскажите поподробнее, что бы вы хотели там видеть
Корявенько набросал lightweight io через интерфейс к сырому буферу:
https://github.com/bibmaster/utils/tree/master/src
Без локалей и флагов. Custom форматирование можно приделать через манипуляторы типа os « hex(123).

Ilia
05.08.2018
10:33:13
Данный вопрос вообще не для того чата. Он вообще глупый, вопрос этот.
Как можно работодателя чем-то заинтересовать? Ему надо чтобы ты его работу делал.
Вот если ты делал почти такую же работу, как надо ему, да ещё денег мало хочешь, вот это его привлечет

Aidar
05.08.2018
10:54:53

Dmitry
05.08.2018
10:58:35

Google

Aidar
05.08.2018
11:05:14
Я про
void attach(byte_buffer* buf) { buf_ = buf; }
Выбросить

Poligraph
05.08.2018
11:10:21

Dmitry
05.08.2018
11:14:28

Aidar
05.08.2018
11:16:25
Давайте так: выбрасываем указатели и динамический полиморфизм, называем buffer словом stream, а stream типа stream_writer, создаём writer через метод класса stream, принимая параметры вывода в аргументах

Alex Фэils?︙
05.08.2018
11:16:56
Constexpr streams

Aidar
05.08.2018
11:17:18
Учитывая что этот ваш стрим просто адаптер для буффера сейчас

Dmitry
05.08.2018
11:20:10
У writer есть специфика. Например обертки для строк должны в конце сделать resize.

Alex Фэils?︙
05.08.2018
11:20:21

Aidar
05.08.2018
11:20:48
Какие обертки для строк?

Google

Dmitry
05.08.2018
11:22:17
Враппер для доступа к буферу std string/vector.

Aidar
05.08.2018
11:22:43
В конце чего?

Dmitry
05.08.2018
11:22:47
Ох, вот ему бы пригодился resize_uninitialized.

Aidar
05.08.2018
11:23:19
Причем тут ваще стринг т вектор если речь про стримы

Dmitry
05.08.2018
11:23:27
При окончании форматирования, он ресайзит с запасом.

Aidar
05.08.2018
11:24:26
Я ваще не понял причем тут имплементация
Ну пусть ресайзит куда хочет и когда хочет

Dmitry
05.08.2018
11:25:22
Stream названия я старался избегать, ибо нет flush.

Aidar
05.08.2018
11:25:37
resize_unitialized это reserve

Dmitry
05.08.2018
11:26:19
А можно писать за пределы size если позволяет capacity?

Aidar
05.08.2018
11:26:25
Нет
Но можно юзать copy с back_inserter

Dmitry
05.08.2018
11:27:37

Aidar
05.08.2018
11:28:06

Dmitry
05.08.2018
11:30:24
Буфер запрашивает resize только при необходимости. Возможно с запасом. Контейнер как то ресайзится и устанавливает буферу новый mutable span.

Aidar
05.08.2018
11:30:55
Как это влияет на интерфейс?

Dmitry
05.08.2018
11:31:00
У буфера своя отдельная позиция записи в пределах этого диапазона.
Это и есть реальный размер.

Aidar
05.08.2018
11:31:24
Это все кишки взаимодействия writer с буффером

Dmitry
05.08.2018
11:31:51
При окончании его надо синхронизировать, т.е. сказать контейнеру окончательный resize.

Google

Aidar
05.08.2018
11:32:34
Да нет это даже просто кишки буффера

Dmitry
05.08.2018
11:32:46

Aidar
05.08.2018
11:33:12
writer пишет в буфер
И все

Dmitry
05.08.2018
11:33:57
Writer в смысле string_builder?

Aidar
05.08.2018
11:34:14
У вас сейчас да

Dmitry
05.08.2018
11:34:26
Это частный случай. Может быть binary_builder например.

Aidar
05.08.2018
11:34:52
Это как раз параметры вывода

Dmitry
05.08.2018
11:34:54
С методами для записи тех же чисел в be/let.

Aidar
05.08.2018
11:36:15

Dmitry
05.08.2018
11:36:37

Aidar
05.08.2018
11:36:46
Надо

Dmitry
05.08.2018
11:36:46
Лишняя связанность.

Aidar
05.08.2018
11:37:07
Там шаблон всеравно
hash<int> в unordered_set такая же связанность


Dmitry
05.08.2018
11:57:44
Там некоторые обертки возможно излишние типа buffer_string_builder. Но это для того чтобы вместо внешних операторов всё свести к потоковому member оператору. Это позволяет использовать в качестве потока rvalue.
Модно получить такой builder из методов конечных контейнеров. string str; str.stream() << 123;
Хотя не, избыточно. Тем более для строк это частный случай, для CharT=char.
Учитывая что этот ваш стрим просто адаптер для буффера сейчас
Форматирование типа паддинга, базы и т.п. можно сделать в виде formatting wrappers, os << fmt::hex(123). Но теоретически можно сделать наследника string_builder с состоянием типа iosbase. Тогда attach/detach могут быть полезны для переключения на другой буфер с сохранением настроек формата. А так то по стоимости что указатель что ссылка если вывод для non-assigned stream считать UB.
Хм, а вот c-string блюсти явно лишнее. Сделал запись терминатора опционально, через манипулятор.

Google

Aidar
05.08.2018
13:52:15

Alik
05.08.2018
15:31:07
Привет. Мне на работе в качестве бонуса книгу должны подарить. Ну и мне нужно выбрать её :)
Можете посоветовать что-то advanced левла (не по типу учебников для чайников)?
Желательно что-то около C++, но что-то общее по computer science и программированию тоже хорошо!

/dev
05.08.2018
15:41:17

Kitsu
05.08.2018
15:43:43

/dev
05.08.2018
15:44:25

Andrei
05.08.2018
15:44:50
Их отсутствие.

/dev
05.08.2018
15:45:17
Справедливо

Alik
05.08.2018
15:47:20

zk
05.08.2018
15:48:15

Alex Фэils?︙
05.08.2018
15:49:11
Сфинае же - пример зависимых типов, если я правильно понял эту концепцию


zk
05.08.2018
15:54:51
C++ Templates. The Complete Guide, 2nd Edition (2018)
Авторы: Vandevoorde D., Josuttis N.
#cpp #books #english
Целевая аудитория: опытные программисты на С++.
С++ - это мощный язык программирования, позволяющий благодаря своим инструментам писать качественное и эффективное программное обеспечение. Наверняка вы слышали о библиотеке шаблонов, которой язык может по праву гордиться. Эта книга описывает С++ 11, С++14 и С++17 применительно к шаблонам и показывает примеры, где такие шаблоны могут оказаться незаменимыми. Также авторы расскажут о преимуществах шаблонов, о метапрограммировании и повторном использовании кода без потери производительности.
В книге рассматриваются следующие темы:
✔️ шаблоны функций;
✔️ шаблоны классов;
✔️ использование шаблонов на практике;
✔️ наследование;
✔️ полиморфизм в шаблонах и многое другое.
Преимущества:
➕ исчерпывающий материал по теме;
➕ актуальная информация;
➕ множество понятных примеров разного уровня погружения в тему.
Недостатки:
➖ большой объём.
Frantisek Franek - Memory as a Programming Concept in C and C++. 2004
The motivation for this book came from years of observing computer science students at universities as well as professional programmers working in software development. I had come to the conclusion that there seemed to be a gap in their understanding of programming. They usually understood the syntax of the programming language they were using and had a reasonable grasp of such topics as algorithms and data structures. However, a program is not executed in a vacuum; it is executed in computer memory. This simple fact exerts a powerful influence on the actual behavior of the program - or, expressed more precisely, a subtle yet powerful influence on the semantics of the particular programming language. I had observed that many students and programmers did not fully understand how memory affected the behavior of the C and C++ programs they were designing. This book is an attempt to fill this gap and provide students and programmers alike with a text that is focused on this topic.
http://libgen.io/search.php?req=Memory+as+a+Programming+Concept&lg_topic=libgen&open=0&view=simple&res=25&phrase=1&column=def


Ilia
05.08.2018
16:10:16


Alex Фэils?︙
05.08.2018
16:31:26

Combot
05.08.2018
16:31:26
Alex Ф-ф-фэils!?︙ (0) увеличил репутацию Ilia Zviagin (1)

Matwey
05.08.2018
16:40:53

Alik
05.08.2018
16:54:21

Denis
05.08.2018
16:56:00

Google

Alik
05.08.2018
16:56:33

Denis
05.08.2018
17:03:38

Alik
05.08.2018
17:05:45
Нет конечно
Тогда зачем читать? Или будет польза если использовать те же принципы в плюсах?

/dev
05.08.2018
17:09:21

Alik
05.08.2018
17:10:19

Aidar
05.08.2018
17:12:41

/dev
05.08.2018
17:13:05

Alik
05.08.2018
17:15:00
А что-то по типу этого сделает меня совершенным существом?
https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/ref=mt_hardcover?_encoding=UTF8&me=&qid=

Крис
05.08.2018
17:19:30

Alik
05.08.2018
17:20:23
Автор Дональд Кнут

Крис
05.08.2018
17:20:39