Ассоциативные контейнеры в C++ работают с конкретным типом ключа. Для поиска в них по ключу подобного типа (std::string, std::string_view, const char*) мы можем нести существенные потери в производительности. В этой статье я расскажу как этого избежать с помощью относительно недавно добавленной возможности гетерогенного поиска.
Рубрика «c++17» - 2
Гетерогенный поиск в ассоциативных контейнерах на C++
2020-10-15 в 21:15, admin, рубрики: c++, C++14, c++17, C++20Под капотом сортировок в STL
2020-10-08 в 13:23, admin, рубрики: algorithms, c++, c++11, C++14, c++17, sorting, Алгоритмы, Блог компании Mail.Ru Group, Программирование
Стандарт С++ почти никогда не указывает, как именно должен быть реализован тот или иной std алгоритм. Дается только описание того, что на входе, что на выходе и асимптотические ограничения по времени работы и памяти. В статье я постарался прикинуть, какие математические алгоритмы и структуры данных имели ввиду авторы стандарта, указывая ограничения для той или иной сортировки и для некоторых других алгоритмов. А так же как эти алгоритмы реализованы на практике.
При написании статьи я использовал стандарт C++17. В качестве реализаций рассматривал GCC 10.1.0 (май 2020) и LLVM/Clang 10.0.0 (март 2020). В каждой и них есть своя реализация STL, а значит и std алгоритмов.
Boost.Compute или параллельные вычисления на GPU-CPU. Часть 1
2020-08-15 в 13:26, admin, рубрики: boost::compute, c++, c++17Привет!
По моим меркам я уже достаточно давно пишу код на C++, но до этого времени ещё не сталкивался с задачами, связанными с параллельными вычислениями. Я не увидел ни одной статьи о библиотеке Boost.Compute, поэтому эта статья будет именно о ней.
Содержание
- Что такое boost.compute
- Проблемы с подключением boost.compute к проекту
- Введение в boost.compute
- Основные классы compute
- Приступаем к работе
- Заключение
Все, что вы должны знать о std::any
2020-05-24 в 11:09, admin, рубрики: Any, c++, c++17, stl, STL containers, перевод, Программирование, системное программированиеПривет! Представляем вашему вниманию перевод статьи «Everything You Need to Know About std::any from C++17» автора Bartlomiej Filipek.
С помощью std::optional
вы можете хранить один какой-то тип. С помощью std::variant
вы можете хранить несколько типов в одном объекте. И С++17 предоставляет нам еще один такой оберточный тип — std::any
, который может хранить что угодно, оставаясь при этом типобезопасным.
Читать полностью »
Глубина кроличьей норы или собеседование по C++ в компании PVS-Studio
2020-04-03 в 14:30, admin, рубрики: c++, c++17, Блог компании PVS-Studio, Карьера в IT-индустрии, собеседования
Авторы: Андрей Карпов, khandeliants Филипп Хандельянц.
Хочется поделиться интересной ситуацией, когда вопрос, используемый нами на собеседовании, оказался сложнее, чем задумывал его автор. С языком C++ и компиляторами надо всегда быть начеку. Не заскучаешь.
Читать полностью »
Jinja2 в мире C++, часть третья. «Теперь ты в конане»
2020-03-06 в 17:36, admin, рубрики: c++, c++ библиотеки, C++14, c++17, conan, conan.io, open source, пакетный менеджерС момента публикации предыдущей части прошло больше полутора лет, была реализована большая куча фичей, сделано несколько релизов, но не об этом пойдёт речь. Пару дней назад в жизни библиотеки произошло важное событие: она была добавлена в основной репозиторий conan'а (conan-center-index). Об том, как это случилось, что для этого пришлось сделать и что вообще нужно делать, чтобы добавить туда свою библиотеку, и пойдёт речь под катом.
Студенты пишут Uart драйвер для STM32F411
2020-02-16 в 18:21, admin, рубрики: c++, c++17, stm32, UML, программирование микроконтроллеров
Доброго здравия всем!
Сегодня я хочу вам рассказать, как постепенно студенты учатся разрабатывать ПО для микроконтроллера на примере драйвера UART на STM32F411. Код и архитектуру с небольшими моими изменениями и доработками я попытаюсь привести здесь.
Сразу отмечу, что все сделано статикой, как я учил :) (статические классы, статическая подписка, статический странно-рекурсивный шаблон, статический контейнер для команд и так далее), но можно реализовать тоже самое с помощью обычных объектов и обычного подхода. В обычном подходе архитектура была бы такая же, но кода немного больше, как по объему так и по количеству строк кода.
Данная статья не претендует на истину, а лишь показывает подход к реализации некоторых задач, в данном случае реализацию Uart драйвера на С++.
Любовь в ненависть indie gamedev’a
2020-01-23 в 19:04, admin, рубрики: assimp, c++, c++17, glfw, glsl, IMGUI, OpenGL, Программирование, разработка игрИстория про то, как я решил заняться разработкой игры без знаний и опыта в этой области, без движка и вложений. Зачем мне это? Зачем это кому-то другому? О провалах и успехах, о начале indie-разработки пост.