Библиотека C/C++ разработчика
7.26K subscribers
691 photos
722 videos
8 files
993 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
FTXUI

Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала!

• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows


https://github.com/ArthurSonzogni/FTXUI

#cpp #programming

👉 @cpp_lib
1👍112
Media is too big
VIEW IN TELEGRAM
Константин Владимиров — О денотации: разрешение имен и его пересмотр в C++23

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

источник

#cpp #programming

👉 @cpp_lib
🔥5
Media is too big
VIEW IN TELEGRAM
Плывущий экран. Вирус на C++. Melting Screen

Программа предоставлена в образовательных целях! Автор не несёт ответственности за её использование!
В этом видео вы узнаете как написать вирус на с++ который заставляет экран сыпаться и плыть.

источник

#cpp #programming

👉 @cpp_lib
👍6😁2🔥1🕊1
This media is not supported in your browser
VIEW IN TELEGRAM
🐦 Flappy Bird на Си: Вес APK < 100 Килобайт! 🚀

В сентябре 2024 года, увидев Flappy Bird на C# в дискорд-канале Raylib, я решил попробовать реализовать эту игру на Си для Android с весом APK менее 100 КБ. 🚀

Идея казалась безумной, но спортивный интерес взял верх. 💪

https://github.com/VadimBoev/FlappyBird

#cpp #programming

👉 @cpp_lib
👍17🔥4❤‍🔥1
Преобразование JSON в объекты C++ на этапе компиляции: демонстрация возможностей принятой в C++26 рефлексии

https://brevzin.github.io/c++/2025/06/26/json-reflection/

#cpp #programming

👉 @cpp_lib
🔥10❤‍🔥1
InputParser — это библиотека на C++ для парсинга командной строки, разработанная Джан Луисом Боливаром Дианой. Она позволяет легко добавлять и обрабатывать опции командной строки в приложениях на C++. Для использования необходимо создать объект Parser, добавить необходимые опции с помощью метода addOption, а затем вызвать метод parse для обработки аргументов. Библиотека требует компилятора с поддержкой стандарта C++23 и распространяется по лицензии MIT.

https://github.com/gianluisdiana/InputParser

#cpp #programming

👉 @cpp_lib
3👍1
Библиотека Asio для начинающих: работаем с корутинами без сегфолтов

Когда я начал работать с Asio и изучал документацию библиотеки, прочитал мнение, что доку писали «для роботов». Описание каждого концепта, функции или особенности приводится лишь однажды, без перекрестных ссылок и других удобных для разработчика деталей. Документация составлена так, что понять ее может разве что машина, «просканировав» текст целиком.

Я подумал, что было бы здорово написать статью, которая служила бы введением в библиотеку. Статью, которая помогла бы начать пользоваться Asio, даже если раньше вы с ней не работали. Что получилось, читайте в статье.

https://habr.com/ru/companies/yadro/articles/939174/

#cpp #programming

👉 @cpp_lib
👍64
О векторном вычислении экспоненциальной функции

Однажды передо мной встала задача векторизовать функцию вычисления экспоненты. Неожиданно оказалось, что готового решения не существует. Функции быстрого вычисления экспоненты, использующие векторный код, имеются практически для всех платформ в составе быстрых математических библиотек. Но они, как правило, читают данные из массивов в памяти и возвращают результат обратно в память. А вот такого, чтобы взять данные из регистра и ответ поместить обратно в регистр, не нашлось. Intel, правда, реализовал функцию векторного вычисления экспоненты в своей библиотеке SVML. Microsoft лицензировала эту библиотеку для использования в составе Visual Studio. В этом случае проблем нет. Но если захочется портировать код под GCC, окажется, что SVML в составе стандартных библиотек отсутствует. Пришлось писать свою функцию.

https://habr.com/ru/articles/923234/

#cpp #programming

👉 @cpp_lib
7👍2
Media is too big
VIEW IN TELEGRAM
Веселье с type erasure: делаем обертку с семантикой значения для полиморфных типов
Павел Новиков

Цель доклада — познакомить с подноготной базовой реализации type erasure (т.н. «стирание типов») в C++, а также придать уверенности при возможном взаимодействии с подобным кодом.

Используя реализацию обертки с семантикой значения в качестве примера, мы посмотрели на то, как работает type erasure, похожий на std::any.

В отличие от повсеместно используемой семантики указателя или ссылки, в данном случае обертка с семантикой значения позволяет нам обращаться с полиморфными объектами со «стертыми типами» как с обычными значениями: перемещать их, копировать, присваивать новые значения, при этом всей головной болью владения (ownership) и клонирования объекта исходного типа займётся реализация «за кулисами».

источник

#cpp #programming

👉 @cpp_lib
👍43
Media is too big
VIEW IN TELEGRAM
Практика языка C.
Константин Владимиров.

На этом занятии мы завершим первый семестр знакомства с основами языка C и разберём многомодульные программы и структуры данных.

00:00 Хеш-таблицы.
15:10 Алгоритм Рабина-Карпа.
22:30 Range-based queries и снова о деревьях.
29:42 Многомодульные программы.
36:30 Структуры данных.
42:40 Литература и задачи.
44:45 Демонстрация многомодульных программ.

источник

#cpp #programming

👉 @cpp_lib
👍10
Встреча ISO C++ в Софии: С++26 и рефлексия

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса, и сейчас я расскажу о софийской встрече Международного комитета по стандартизации языка программирования C++, в которой принимал активное участие. Это была последняя встреча, на которой новые фичи языка, с предодобренным на прошлых встречах дизайном, ещё могли попасть в C++26.


И результат превзошёл все ожидания:

- compile-time-рефлексия
- рефлексия параметров функций
- аннотации
- std::optional<T&‍>
- параллельные алгоритмы

https://habr.com/ru/companies/yandex/articles/920470/

#cpp #programming

👉 @cpp_lib
👍103❤‍🔥2🤔2
Асинхронная обработка ошибок – это сложно

Или как я научился не беспокоиться из-за cudaGetLastError() и просто признал её нежелательной

Любому, кто сталкивался с проектированием API, приходилось мучиться над вопросом, как лучше всего распространять ошибки к вызывателям функций. Эта проблема появилась ещё раньше, чем термин «API». Даже несколько десятилетий назад (скажем, 30+) проектировщики интерфейсов умели отделять возвращаемые ошибки от прочей полезной нагрузки в рамках тех функций, которые доставляют эту информацию вызвавшему их узлу.

Иногда полезно знать, как лучше не делать. Мой любимый пример антипаттерна в рассматриваемой области — прославленная функция atoi() из среды выполнения C, которая преобразует строку в целое число:


int atoi (const char * str);


https://parallelprogrammer.substack.com/p/asynchronous-error-handling-is-hard

#cpp #programming

👉 @cpp_lib
2👍2🤔1
Media is too big
VIEW IN TELEGRAM
Back to Basics: C++ Move Semantics
Andreas Fertig

Семантика перемещения — это тема, которую часто сложно понять. Этот доклад поможет тебе разобраться в ней, развеяв некоторые мифы с помощью нового и необычного способа объяснения концепции перемещения.

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

Мы также рассмотрим правила использования std::move и std::forward: когда и в каких случаях применять каждую из этих функций.

Ещё одна важная тема — что такое объект после перемещения (moved-from object) и что с ним можно делать.

Хочешь выжать максимум производительности? Тогда поговорим о ref-квалификаторах и о том, как они помогают избежать лишних потерь в эффективности.

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

источник

#cpp #programming

👉 @cpp_lib
👍2