c++17

  • ХабрахабрФото Гетерогенный поиск в ассоциативных контейнерах на C++

    Гетерогенный поиск в ассоциативных контейнерах на C++

    Ассоциативные контейнеры в C++ работают с конкретным типом ключа. Для поиска в них по ключу подобного типа (std::string, std::string_view, const char*) мы можем нести существенные потери в производительности. В этой статье я расскажу как этого избежать с помощью относительно недавно добавленной возможности гетерогенного поиска. Имея контейнер std::map<std::string, int> с мы должны быть проинформированны о возможной высокой цене при поиске (и…

    Читать далее »
  • ХабрахабрФото Релиз акторного фреймворка rotor v0.09 (c++)

    Релиз акторного фреймворка rotor v0.09 (c++)

    rotor — ненавязчивый С++ акторный микрофремворк, похожий на своих старших братьев — caf и sobjectizer. В новом релизе внутреннее ядро полностью было переделано с помощью механизмов плагинов, так что это затронуло жизненный цикл акторов. Связывание акторов Всякая система акторов базируется на взаимодействии между ними, т. е. в отправлении сообщений друг другу (а также в возможных побочных эффектах в качестве реакции на…

    Читать далее »
  • ХабрахабрФото Под капотом сортировок в STL

    Под капотом сортировок в STL

    Стандарт С++ почти никогда не указывает, как именно должен быть реализован тот или иной std алгоритм. Дается только описание того, что на входе, что на выходе и асимптотические ограничения по времени работы и памяти. В статье я постарался прикинуть, какие математические алгоритмы и структуры данных имели ввиду авторы стандарта, указывая ограничения для той или иной сортировки и для некоторых других…

    Читать далее »
  • ХабрахабрФото [Из песочницы] Boost.Compute или параллельные вычисления на GPU/CPU. Часть 1

    [Из песочницы] Boost.Compute или параллельные вычисления на GPU/CPU. Часть 1

    Привет, Хабр! По моим меркам я уже достаточно давно пишу код на C++, но до этого времени ещё не сталкивался с задачами, связанными с параллельными вычислениями. Я не увидел ни одной статьи о библиотеке Boost.Compute, поэтому эта статья будет именно о ней. Содержание Что такое boost.compute Проблемы с подключением boost.compute к проекту Введение в boost.compute Основные классы compute Приступаем к…

    Читать далее »
  • ХабрахабрФото Ох уж этот std::make_shared…

    Ох уж этот std::make_shared…

    C++ Core Guidelines содержат правило R22, предписывающее использовать std::make_shared вместо вызова конструктора std::shared_ptr. В Core Guidelines приводится всего лишь один аргумент за такое решение — экономия на аллокации (и деаллокации). А если копнуть чуть глубже? std::make_shared полезный Почему вообще в STL появился std::make_shared? Есть канонический пример, в котором конструирование std::shared_ptr из свежесозданного сырого указателя может приводить к утечке памяти: process(std::shared_ptr<Bar>(new…

    Читать далее »
  • ХабрахабрФото [Из песочницы] Все, что вы должны знать о std::any

    [Из песочницы] Все, что вы должны знать о std::any

    Привет, Хабр! Представляем вашему вниманию перевод статьи «Everything You Need to Know About std::any from C++17» автора Bartlomiej Filipek. С помощью std::optional вы можете хранить один какой-то тип. С помощью std::variant вы можете хранить несколько типов в одном объекте. И С++17 предоставляет нам еще один такой оберточный тип — std::any, который может хранить что угодно, оставаясь при этом типобезопасным. Основы…

    Читать далее »
  • ХабрахабрФото [Из песочницы] Кроссплатформенный многопоточный TCP/IP сервер на C++

    [Из песочницы] Кроссплатформенный многопоточный TCP/IP сервер на C++

    Как-то раз встала задача по написанию простого и быстрого многопоточного TCP/IP сервера на C++ и при этом, чтобы работал из под Windows и Linux без требования как-либо изменять код за пределами класса самого сервера. Ранее, на чистом C++ без библиотек вроде Qt, Tcp-сервер не писал, и предвещал себе долгое время мучений с платформо-зависимостью. Но как оказалось всё гораздо проще чем…

    Читать далее »
  • ХабрахабрФото Глубина кроличьей норы или собеседование по C++ в компании PVS-Studio

    Глубина кроличьей норы или собеседование по C++ в компании PVS-Studio

    Авторы: Андрей Карпов, khandeliants Филипп Хандельянц. Хочется поделиться интересной ситуацией, когда вопрос, используемый нами на собеседовании, оказался сложнее, чем задумывал его автор. С языком C++ и компиляторами надо всегда быть начеку. Не заскучаешь.Как и в любой другой программисткой компании, у нас есть наборы вопросов для собеседования на вакансии разработчиков на языках C++, C# и Java. Многие вопросы у нас с…

    Читать далее »
  • ХабрахабрФото Jinja2 в мире C++, часть третья. «Теперь ты в конане»

    Jinja2 в мире C++, часть третья. «Теперь ты в конане»

    С момента публикации предыдущей части прошло больше полутора лет, была реализована большая куча фичей, сделано несколько релизов, но не об этом пойдёт речь. Пару дней назад в жизни библиотеки произошло важное событие: она была добавлена в основной репозиторий conan'а (conan-center-index). Об том, как это случилось, что для этого пришлось сделать и что вообще нужно делать, чтобы добавить туда свою библиотеку,…

    Читать далее »
  • ХабрахабрФото Студенты пишут Uart драйвер для STM32F411

    Студенты пишут Uart драйвер для STM32F411

    Доброго здравия всем! Сегодня я хочу вам рассказать, как постепенно студенты учатся разрабатывать ПО для микроконтроллера на примере драйвера UART на STM32F411. Код и архитектуру с небольшими моими изменениями и доработками я попытаюсь привести здесь. Сразу отмечу, что все сделано статикой, как я учил 🙂 (статические классы, статическая подписка, статический странно-рекурсивный шаблон, статический контейнер для команд и так далее), но…

    Читать далее »


Кнопка «Наверх»