Pull to refresh
24
0

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

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

Reading time 5 min
Views 8.7K
High performance *C++ *
Translation

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

Читать дальше →
Total votes 39: ↑38 and ↓1 +37
Comments 33

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

Reading time 3 min
Views 7.9K
Programming *C++ *

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


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

Читать дальше →
Total votes 11: ↑9 and ↓2 +7
Comments 58

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

Reading time 10 min
Views 25K
Abnormal programming *C++ *

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

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

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

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

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

Читать дальше →
Total votes 6: ↑5 and ↓1 +4
Comments 0

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

Reading time 5 min
Views 9.9K
C++ *
Хочу рассказать как мы использовали списки базовых типов для обработки сообщений. Сообщения представляют собой структуры, унаследованные от небольших базовых структур. Вся полезная информация хранится в базовых структурах. Для обработки нужно знать от каких базовых структур было унаследовано обрабатываемое сообщение. Все что нужно для работы со списками типов мы нашли в Boost.MPL. В качестве списка типов выбрали boost::mpl::vector. Для прохода по списку типов boost::mpl::for_each.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Comments 4

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

Reading time 6 min
Views 15K
C++ *
Sandbox
Есть несколько базовых классов, наследники и некоторый шаблонный обработчик, выполняющий какие-то действия с экземпляром наследников. Его поведение зависит от того, какие классы являются базовыми для обрабатываемого класса. Возможный вариант я хочу показать.
Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Comments 19

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity