Как стать автором
Обновить
29
0

Программист C++/Scala/Go

Отправить сообщение

Типы, больше типов

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров5.8K

При описании модели данных, часто приходится создавать новые типы, в первую очередь, используя такие ключевые слова как class/struct/record. Я же предлагаю взглянуть на случаи, когда моделируемая сущность, описывается существующими, часто простыми типами, такими как целое число или строка. В статье хочу поделиться мыслями, которые привели меня к использованию специальных типов там, где часто используются встроенные: int, string и тому подобные. И как удобно (относительно) это делать. Примеры приведу на языках Scala, Go и C++.

Читать далее
Всего голосов 15: ↑13 и ↓2+11
Комментарии49

OutOfLine – паттерн размещения в памяти для высокопроизводительных приложений на C++

Время на прочтение5 мин
Количество просмотров8.8K

Во время работы в Headlands Technologies мне посчастливилось написать несколько утилит для упрощения создания высокопроизводительного кода на C++. Эта статья предлагает обобщенный обзор одной из этих утилит — OutOfLine.

Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии33

Варианты operator<< для логгера

Время на прочтение3 мин
Количество просмотров8.2K

Уважаемые хабровчане, у меня родилась публикация — вопрос. С удовольствием выслушаю вашу критику в комментариях.


В проекте пришлось набросать небольшую обертку над существующей системой логирования и помимо ее основного предназначения захотелось ее использовать в стиле работы с потоком вывода.

Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии58

Ленивый список в C++

Время на прочтение10 мин
Количество просмотров26K

В Scala есть интересная коллекция — Stream. Контейнер, который представляет собой список, элементы которого вычисляются (и сохраняются после этого) при первом обращении:

The class Stream implements lazy lists where elements are only evaluated when they are needed.

Мне захотелось реализовать нечто подобное на C++.
Что из этого получилось...
Всего голосов 24: ↑24 и ↓0+24
Комментарии9

Делаем свой итератор

Время на прочтение6 мин
Количество просмотров82K
Не часто возникает необходимость создать свой итератор и хотелось бы иметь под рукой небольшой HowTo. В этой заметка хочу рассказать как создать простейший итератор, который можно использовать в стандартных алгоритмах типа std::copy, std::find. Какие методы и определения типов нужны в классе контейнере, чтобы его можно было обходить в циклах for из c++11 и BOOST_FOREACH.

Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии0

Обработка структуры по списку базовых типов

Время на прочтение5 мин
Количество просмотров10K
Хочу рассказать как мы использовали списки базовых типов для обработки сообщений. Сообщения представляют собой структуры, унаследованные от небольших базовых структур. Вся полезная информация хранится в базовых структурах. Для обработки нужно знать от каких базовых структур было унаследовано обрабатываемое сообщение. Все что нужно для работы со списками типов мы нашли в Boost.MPL. В качестве списка типов выбрали boost::mpl::vector. Для прохода по списку типов boost::mpl::for_each.
Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии4

Специализация шаблона базовым классом

Время на прочтение6 мин
Количество просмотров16K
Есть несколько базовых классов, наследники и некоторый шаблонный обработчик, выполняющий какие-то действия с экземпляром наследников. Его поведение зависит от того, какие классы являются базовыми для обрабатываемого класса. Возможный вариант я хочу показать.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии19

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность