Библиотека C/C++ разработчика | cpp, boost, qt
19.7K subscribers
1.95K photos
60 videos
16 files
4.19K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
🎓 Сколько на самом деле стоит твой диплом? Считаем разницу в зарплатах джунов с вышкой и без

В этой статье я разберу, как образование (вуз или его отсутствие) влияет на карьеру в российской IT-индустрии. Несмотря на расхожее мнение, что айтишники могут построить успешную карьеру без диплома, статистика и практика показывают: диплом все же играет роль — особенно на старте. Я расскажу, в каких случаях сильный бренд университета действительно бустит карьеру, а где решающим фактором остаются опыт, проекты и навыки.

👉 Статья

🔹Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹Сайт Proglib

Библиотека C/C++ разработчика

#свежак
🥱4😁1
🍪 Зачем нужен std::out_ptr, если есть &ptr?

Многие С++ разработчики передают &smart_ptr в C API, думая, что это безопасно. Спойлер: это undefined behavior, который может молча сломать ваш код.

👁 Проблема на уровне памяти

std::unique_ptr<T> — это не просто T*. Внутри он хранит указатель + deleter. Когда вы пишете CreateObject(&my_ptr), C функция записывает адрес напрямую в память smart pointer, минуя деструктор старого объекта.

unique_ptr<Obj> ptr = make_unique<Obj>(); // ptr владеет объектом
CreateObject(&ptr); // UB! Старый объект утёк


🍿 Как работает out_ptr

std::out_ptr(ptr) создаёт временный proxy-объект. Он:

• Вызывает ptr.reset() при создании (освобождает старый ресурс)
• Предоставляет адрес внутреннего T** для C функции
• При уничтожении передаёт владение обратно в smart pointer

auto ptr = make_unique<Obj>();
CreateObject(std::out_ptr(ptr)); // Безопасно!


💡 Под капотом proxy хранит два указателя: временный T* для C API и ссылку на исходный smart pointer. Деструктор proxy вызывает ptr.reset(temp_ptr).

❗️Практика: всегда используйте out_ptr для output-параметров в C API.

🔹Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹Сайт Proglib

Библиотека C/C++ разработчика

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥2
Под капотом любого AI — C++ и Математика

Тензоры, матрицы, оптимизация вычислений — это родная стихия для C++ разработчика. Если вы хотите писать движки для нейросетей или работать в R&D, курс «Математика для разработки AI-моделей» — ваш следующий шаг.

Старт: Завтра.
Цена: 28 200 ₽.

Освежите знания вуза и примените их к современным задачам.

👉 Ссылка на регистрацию

Бонус:
Бесплатный тест
😁41
😎 Ranges в C++20: 3 материала, которые заставят забыть про итераторы

Ranges в C++20 — это «конвейер STL»: берёте контейнер, навешиваете filter | transform | take и получаете читаемый, ленивый и безопасный пайплайн вместо вложенных циклов и временных векторов. ​

Вместо ручного std::transform/std::copy_if и контроля lifetime — цепочки std::views::filter | std::views::transform, как в bash, но type-safe и без лишних аллокаций. ​

✍️ Материалы:

C++20 Ranges in Practice — Tristan Brindle — пошаговый рефакторинг императивного кода с циклами в понятные pipelines std::views::filter | transform | take плюс разбор сгенерированного кода и стоимости абстракций

New Algorithms in C++23 — развитие идеи: новые range‑алгоритмы, паттерны компоновки ranges::views и взгляд на C++ как язык обработки данных

Introduction to C++20 Ranges and Composability — введение в C++ Ranges и обсуждение существующих возможностей библиотеки

Пробовали ranges в production? Какие задачи решились элегантнее всего?

🔹Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹Сайт Proglib

Библиотека C/C++ разработчика

#линкер_рекомендует
👍6
🍴 Интеграция с системами сборки

"CMake генерирует Compilation Database, но модули не работают — что не так?" — частый вопрос при настройке инфраструктуры разработки.

Статья объясняет, почему правильная интеграция системы сборки критична для работы модулей и что должны делать build-системы.

❗️Что нужно от системы сборки:

• генерация полной Compilation Database со всеми модулями
• режим "build BMIs only" для быстрой проверки без полной сборки
• правильные флаги компиляции с -fmodule-file для всех зависимостей

Основной фокус — мост между системой сборки и инструментами анализа кода, и почему модули усложнили эту интеграцию.

Особенно важно для мантейнеров систем сборки (CMake, Bazel, Meson), которые хотят обеспечить first-class поддержку модулей.

Вы поймёте, что модули C++20 нарушили фундаментальное предположение о независимости единиц трансляции, и все инструменты вынуждены адаптироваться к новой реальности.

✏️ Статья


🔹Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹Сайт Proglib

Библиотека C/C++ разработчика

#буст
👍21