Библиотека C/C++ разработчика
6.79K subscribers
652 photos
689 videos
8 files
938 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
Три теоремы о сортировках

Я знаю многих программистов и руководителей в IT компаниях, которые недолюбливают математиков и в частности считают их далёкими от жизни идиотами из-за их утверждений в духе "нельзя отсортировать последовательность быстрее, чем за nlogn" -- ведь это очевидным образом неверно, есть же сортировка подсчетом и radix sort. Нюанс в том, что описанное выше -- это распространённая некорректная трактовка одной из ключевых теорем об алгоритмах сортировок, корректное утверждение выглядит так: "не существует алгоритма, который бы гарантированно находил перестановку n элементов, приводящую к возрастающему порядку, быстрее чем за nlogn используя только операции попарного сравнения". В этом утверждении больше слов, оно более сложно в плане когнитивного восприятия, ключевой момент обозначил жирным шрифтом, чувствуете разницу?

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

#cpp #programming

👉 @cpp_lib
🔥 Готовы прокачать свои навыки на C++ до уровня эксперта? Освойте разработку на Qt и создавайте приложения для ОС «Аврора», используя лучшие практики и мощные инструменты! 🚀

Курс "Разработка прикладного ПО на Qt и ОС «Аврора»" — возможность для разработчиков на C++, которые хотят:

- изучить работу с кросс-платформенным фреймворком Qt.
- создавать высококачественные графические интерфейсы.
- развиваться в нише ОС «Аврора», которая только набирает популярность.

💥 до 27 апреля не упустите шанс получить скидку 15%! Только для вас скидка 10% + промокод QT_Avrora5 на дополнительные 5%!

Пройдите вступительное тестирование и успейте вступить в группу курса!

👉Пройти тест: https://vk.cc/cL4RhV

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🚀 Подборка Telegram каналов для программистов

Системное администрирование, DevOps 📌

https://t.me/bash_srv Bash Советы
https://t.me/win_sysadmin Системный Администратор Windows
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин
https://t.me/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://t.me/linux_odmin Linux: Системный администратор
https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux

1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://t.me/DevLab1C 1С:Предприятие 8
https://t.me/razrab_1C 1C Разработчик
https://t.me/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://t.me/rabota1C_rus Вакансии для программистов 1С

Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://t.me/pythonofff Python академия.
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python

Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://t.me/game_devv Все о разработке игр

Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов

БигДата, машинное обучение 📌
https://t.me/bigdata_1 Big Data, Machine Learning

Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
https://t.me/lifeproger Жизнь программиста. Авторский канал.

QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://t.me/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_2 Хакер Free

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/matgeoru Математика | Геометрия | Логика

Excel лайфхак📌
https://t.me/Excel_lifehack

https://t.me/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Техники сортировки в C++

Сортировка — это процесс упорядочивания элементов массива или списка в определённом порядке (например, по возрастанию или убыванию).

В C++ реализовано множество алгоритмов сортировки, включая:
- Сортировку пузырьком (Bubble Sort)
- Сортировку вставками (Insertion Sort)
- Сортировку выбором (Selection Sort)
- Быструю сортировку (Quick Sort)
- Сортировку слиянием (Merge Sort)
- Сортировку кучей (Heap Sort)
- ПорRadix Sort
- Bucket Sort

Каждый метод сортировки имеет свою эффективность по времени выполнения и памяти:
- Простые алгоритмы вроде пузырьковой сортировки подходят для небольших массивов.
- Быстрая сортировка и сортировка слиянием лучше работают с большими объёмами данных.
- Выбор конкретного метода зависит от характеристик задачи: объём данных, требования к памяти, допустимость нестабильной сортировки и т.д.

Также в C++ стандартная библиотека предоставляет функцию std::sort(), которая реализует быструю сортировку с улучшениями.

https://www.softwaretestinghelp.com/sorting-techniques-in-cpp/

#cpp #programming

👉 @cpp_lib
Media is too big
VIEW IN TELEGRAM
Vibe Coding C++ — Йенс Веллер — Meeting C++ online

Я занимался "vibe coding" на C++, чтобы почувствовать, на что сейчас способны Grok, ChatGPT и Claude*. Простая задача с несколькими нетривиальными случаями — это и стало испытанием.

Я задумался, можно ли создать ассистента для программирования на базе ИИ, и решил, что будет отличной идеей провести небольшое "собеседование" с этими агентами, чтобы проверить, справятся ли они с этой задачей.

источник

#cpp #programming

👉 @cpp_lib
Media is too big
VIEW IN TELEGRAM
Сборка C++ проектов. Raylib. Дополнительные темы CMAKE. Game Engine серии

0:00:00 - Введение
0:00:51 - Raylib, SDL, SFML
0:03:20 - Подключаем, тестируем raylib
0:14:22 - Вложенные CMakeLists
0:33:15 - Макросы в CMake
0:36:35 - Raylib + ChuckNorrisJokes
0:45:49 - Собираем все проекты

источник

#cpp #programming

👉 @cpp_lib
📕 Тест по навыкам работы со схемотехникой и С/С++ для разработчиков, инженеров-схемотехников и энтузиастов 📕

Ответьте на 12 вопросов и проверьте, насколько вы разбираетесь в базовых принципах работы со схемотехникой, понимаете особенности работы с микроконтроллерами и на сколько готовы к обучению на курсе — «Embedded Developer».

За 4 месяца курса вы:
- Научитесь писать код для управления различными модулями, такими как таймеры, прерывания, АЦП/ЦАП
- Освоите использование различных протоколов взаимодействия (I2C, SPI, UART, WiFi и BLE) для интеграции микроконтроллеров в сложные системы
- Сможете создавать надежные и эффективные электронные устройства, используя современные инструменты и технологии

Время прохождения теста ограниченно 60 минут

👉 ПРОЙТИ ТЕСТ — https://vk.cc/cLkoYG

💣 Пройдите тест, получите скидку на курс, и записи уроков от преподавателей курса в подарок.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Пишем на С++ вектор, умеющий расширяться без копирования элементов

В языке С есть функции malloc, free и realloc. При использовании последней вы можете написать этакий расширяющийся массив из примитивных типов или структур (классов-то нет), который, можно надеяться, не будет копировать все данные при каждом расширении. В С++ есть встроенный класс vector, который представляет из себя расширяющийся массив, но он так не умеет: при каждом расширении вектора выделяется новый участок памяти и все элементы перемещаются на него (по возможности, с использованием move-семантики). Но ведь, если можно каждый раз не копировать все старые элементы на новое место, вектор должен работать быстрее? В этой статье я попробую написать вектор, который умеет расширяться без копирования элементов.

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

https://habr.com/ru/post/701784/

#cpp #programming

👉 @cpp_lib
🔐 Как сделать код на Rust надёжнее и безопаснее?

📅 14 мая в 20:00 МСК мы разберём ключевые аспекты работы с контрактами и инвариантами в Rust на открытом вебинаре.

❗️Что вас ждёт:

— Разберём понятие инварианта и как он работает в Rust.

— Обсудим инвариант безопасности и его роль в написании надежного кода.

— Узнаем, как создавать удобные и безопасные контракты для API.

🦀 Вы освоите использование системы типов Rust для создания надёжных решений и узнаете, как компилятор и система типов помогают писать безопасный и эффективный код.

➡️ Регистрируйтесь и получите скидку на программу обучения «Rust Developer. Professional»: https://vk.cc/cLCkz3

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
This media is not supported in your browser
VIEW IN TELEGRAM
Этот проект содержит исходный код игр Command & Conquer: Tiberian Dawn и Command & Conquer: Red Alert, выпущенных как часть сборника Command & Conquer Remastered Collection.

Код распространяется под лицензией GPL v3 и предоставляет возможность энтузиастам и разработчикам модифицировать, изучать и использовать движок в рамках условий лицензии. В проекте используется C++ и множество современных практик разработки, а также система сборки CMake.

Репозиторий включает:

* Исходный код движка на C++
* Документацию по сборке
* Скрипты для интеграции с игрой
* Исторический контекст разработки

Проект ориентирован на обучение, поддержку моддинга и развитие сообщества вокруг классических RTS-игр.

https://github.com/electronicarts/CnC_Remastered_Collection

#cpp #programming

👉 @cpp_lib
Переходим на C++26: как собрать и настроить GCC 15.1 в Ubuntu

На днях вышел GCC 15.1.0 с поддержкой некоторых фич C++26.

Однако нынешняя версия Ubuntu все еще использует старый GCC 13.

Здесь мы и рассмотрим, как вручную установить GCC 15.1 на Ubuntu и начать использовать новейшие элементы C++26 уже сегодня.

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

#cpp #programming

👉 @cpp_lib
This media is not supported in your browser
VIEW IN TELEGRAM
ggwave — это компактная и переносимая библиотека C/C++ для передачи и приема коротких сообщений с использованием звуковых волн.

Она позволяет устройствам обмениваться данными через звук — без необходимости в Bluetooth, Wi-Fi или других беспроводных технологиях. Это особенно полезно для коротких одноразовых взаимодействий между устройствами, которые находятся рядом друг с другом.

Поддерживает:
* Передачу текста через звук
* Возможность генерации и анализа аудиосигналов в реальном времени
* Кроссплатформенность: работает на Windows, macOS, Linux, iOS, Android и в браузере (через WebAssembly)

Примеры использования:
* Аутентификация устройств поблизости
* Обмен контактами или ссылками
* Синхронизация устройств без интернета

https://github.com/ggerganov/ggwave

#cpp #programming

👉 @cpp_lib
Media is too big
VIEW IN TELEGRAM
Генерация лабиринтов: алгоритм Эллера

Сегодня я хотел бы рассказать о генерации идеального лабиринта — алгоритмом Эллера. Статья подойдёт всем любителям алгоритмов»

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

#cpp #programming

👉 @cpp_lib
🚀 Подборка Telegram каналов для программистов

Системное администрирование, DevOps 📌

https://t.me/bash_srv Bash Советы
https://t.me/win_sysadmin Системный Администратор Windows
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин
https://t.me/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://t.me/linux_odmin Linux: Системный администратор
https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux

1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://t.me/DevLab1C 1С:Предприятие 8
https://t.me/razrab_1C 1C Разработчик
https://t.me/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://t.me/rabota1C_rus Вакансии для программистов 1С

Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://t.me/pythonofff Python академия.
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python

Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://t.me/game_devv Все о разработке игр

Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов

БигДата, машинное обучение 📌
https://t.me/bigdata_1 Big Data, Machine Learning

Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
https://t.me/lifeproger Жизнь программиста. Авторский канал.

QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://t.me/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_2 Хакер Free

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/matgeoru Математика | Геометрия | Логика

Excel лайфхак📌
https://t.me/Excel_lifehack

https://t.me/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Как Мэтт Годболт «продал» мне Rust (рассказав о C++)

Мэтт Годболт, знаменитый разработчик Compiler Explorer — потрясающий человек, вам стоит найти в вебе и изучить весь созданный им контент. Именно этим и занимался, просматривая Correct by Construction: APIs That Are Easy to Use and Hard to Misuse. Я уже больше двадцати лет работаю с C/C++, поэтому эта тема была мне близка.

Когда я смотрел его доклад, ко мне постоянно приходила мысль: «Да! И именно поэтому в Rust это делается так». После просмотра видео я подумал, что этот доклад — отличный способ понять, как Rust помогает разработчикам не только в безопасности по памяти, и в своей статье я расскажу об этом.

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

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

original https://www.collabora.com/news-and-blog/blog/2025/05/06/matt-godbolt-sold-me-on-rust-by-showing-me-c-plus-plus/

#cpp #programming

👉 @cpp_lib
Media is too big
VIEW IN TELEGRAM
DevSecOps for C++? Keep Calm and use Conan

Luis Caro Campos - CppCon 2024

How Conan can help secure your software supply chain

источник

#cpp #programming

👉 @cpp_lib
⁉️ Хотите научиться разрабатывать веб-сервисы на Rust?

📅 19 мая в 20:00 МСК на открытом вебинаре мы покажем, как создать мощный и эффективный веб-сервис с использованием HTTP и gRPC API на Rust.

Что вас ждёт:

— Разбор бизнес-логики веб-сервиса.

— Реализация HTTP и gRPC API.

— Разработка клиентского приложения и тестов для сервиса.

🎁 Открытый урок проходит в преддверие старта курса «Rust Developer. Professional». Все участники получат скидку на обучение.

➡️ Запишитесь прямо сейчас, чтобы не пропустить: https://vk.cc/cLTcXQ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Как я написал эмулятор Nintendo Gameboy на C++ за две недели

Расскажу, как устроена архитектура консоли Nintendo Gameboy, как можно эмулировать её основные компоненты, какие решения я принимал в процессе разработки и какие инструменты использовал.

В свободное время, (прим., во время отпуска) я бывает берусь за какие-нибудь небольшие проекты не связанные с моей основной деятельностью. В этот раз решил создать эмулятор консоли. Вопреки моде на Rust, взял проверенный годами C++. Эмуляция — непростая задача. Производители редко публикуют полные спецификации аппаратной части, поэтому сообщество занимается восстановлением поведения системы по косвенным признакам и тестированию. Полное решение таких задач требует больше времени, чем пара недель отпуска. В условиях жестких временных рамок, желания получить быстрый результат я остановился на эмуляции Nintento Gameboy. Активное сообщество, популярность и долгая жизнь консоли привели к появлению огромного количества открытых ресурсов, которые делают возможным получить быстрый и наглядный результат. Например, на archive.org доступно руководство разработчика (GameBoyProgManVer1.1), а поиск по Github даёт более 8000 репозиториев, так или иначе связанных с данной консолью.

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

#cpp #programming

👉 @cpp_lib
Любителям x86-64 assembler посвящается: DIY волокна в C++

Нас ждёт мозговыносящая смесь 64/32-битного ассемблера и старого-доброго C++. Мы сделаем собственную реализацию... Волокон (fibers) без вызова Win API и звонков в службу спасения.

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

👉 @cpp_lib
C++26: constexpr и исключения

В C++26 мы, наконец, сможем использовать throw в constexpr функциях!

Предыстория

В C++11 впервые появилась возможность помечать функции как constexpr, что позволяло выполнять их на этапе компиляции. Однако с самого начала были ограничения: такие функции не могли содержать try/catch и throw. Это было связано с тем, что исключения в constexpr контексте раньше просто не имели смысла: выполнение либо происходило на этапе компиляции, либо завершалось ошибкой компиляции.

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

Что изменилось в C++26

C++26 снимает запрет на throw в constexpr функциях.

Теперь можно:

* использовать throw в constexpr функциях;
* обрабатывать исключения с помощью try/catch (при выполнении во время выполнения, а не компиляции);
* компилятор по-прежнему выдаёт ошибку, если throw вызывается при вычислении на этапе компиляции.

Пример


constexpr int might_throw(bool should_throw) {
if (should_throw) {
throw std::runtime_error("Oops");
}
return 42;
}


Теперь это разрешено! Но:


constexpr int x = might_throw(true); // Ошибка компиляции
constexpr int y = might_throw(false); // Ок, y == 42


А вот во время выполнения:


int main() {
try {
std::cout << might_throw(true); // Бросает исключение
} catch (const std::exception& e) {
std::cout << e.what(); // "Oops"
}
}


Зачем это нужно?

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

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

https://www.sandordargo.com/blog/2025/05/07/cpp26-constexpr-exceptions

#cpp #programming

👉 @cpp_lib