TGViewer
Channel Public Channel
Библиотека C/C++ разработчика | cpp, boost, qt

Библиотека C/C++ разработчика | cpp, boost, qt

@cppproglib

Все самое полезное для плюсовика и сишника в одном канале.

Как запустить своего ии-агента: https://clc.to/tvpmDQ

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

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

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17

#WXSSA
Subscribers
16.9K
Photos
2.3K
Videos
74
Links
4.6K

Showing posts older than #6288 · Back to latest

Older Posts 20 shown
Post #6285 2.99K
📰 Свеженькое из мира C++

Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.

😎 Интересное:

• Чем ranges::iota отличается от std::iota под капотом? — описание, в чём разница разных алгоритмов iota из STL
• Сколько на самом деле стоит твой диплом? — статья о том так ли нужен диплом в IT
• Зачем нужен std::out_ptr, если есть &ptr? — полезная функция, особенно для работы с C API
• Ranges в C++20: 3 материала, которые заставят забыть про итераторы — материалы для погружения в ranges
• Интеграция с системами сборки — статья объясняющая, почему правильная интеграция системы сборки критична для работы модулей и что должны делать build-системы
• ObjectBox — встраиваемая БД для C/C++

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

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

#свежак
  • 👍 3
Post #6282 3.05K
Вы пишете то, на чём работает Python

Все эти NumPy и TensorFlow под капотом крутят C/C++. Кому, как не вам, разбираться в высокопроизводительной математике?

Мы запустили живые вебинары в курсе по математике для AI. Это отличная возможность понять алгоритмическую базу Data Science.

Темы ближайших занятий:

— Linear Algebra: эффективные операции с матрицами и векторами;
— Regression Analysis: математика линейных зависимостей и МНК;
— Decompositions: SVD, собственные векторы и снижение размерности.

Разбираем теорию и сразу кодим (на Python, но вы поймете суть моментально).

Успейте до 9 декабря:
https://clc.to/LojFzw
  • 😁 3
Post #6281 2.66K
🐸 Подборка вакансий для C++-разработчиков за неделю

Программист C++ / Qt — от 150 000 и до 400 000 ₽ Офис (Москва)

Эксперт С++ в команду технологии автономного вождения — Офис (Москва)

С++-разработчик (Инфраструктура поиска) — от 350 000 и до 500 000 ₽ Удалёнка

C++ Developer — от 4 500 и до 6 700 € Офис (Берлин)

Middle Разработчик на C/C++ под Linux — от 250 000 и до 300 000 Офис (Москва)

Библиотека C/C++ разработчика
  • 😁 2
Post #6279 3.09K
🍴 Интеграция с системами сборки

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

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

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

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

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

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

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

✏️ Статья


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

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

#буст
  • 👍 2
  • ❤ 1
Post #6278 3.01K
😎 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
Post #6277 2.66K
Под капотом любого AI — C++ и Математика

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

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

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

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

Бонус:
Бесплатный тест
  • 😁 4
  • ❤ 1
Post #6276 2.49K
🍪 Зачем нужен 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++ разработчика

#под_капотом
  • 👍 8
  • ❤ 5
  • 🔥 2
Post #6275 2.75K
🎓 Сколько на самом деле стоит твой диплом? Считаем разницу в зарплатах джунов с вышкой и без

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

👉 Статья

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

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

#свежак
  • 🥱 6
  • 😁 1
Post #6272 3.07K
😎 Visual Studio: мамонт, который всё ещё актуален

Microsoft Visual Studio часто критикуют за «тяжеловесность», но она остаётся золотым стандартом для Windows-разработки на C++. Тем более недавно вышло большое обновление 😄

Главные преимуществы Visual Studio:

• IntelliSense и хороший отладчик
• Возможность отлаживать многопоточный код с визуализацией состояния потоков, и много чего, что работает из коробки
• Community Edition бесплатна для индивидуальных разработчиков и небольших команд

✍️ Минусы:

• IDE занимает десятки гигабайт
• медленно запускается
• работа на Linux требует костылей

❗Для enterprise-проектов под Windows с интеграцией в экосистему Microsoft альтернатив практически нет.

Используете ли вы Visual Studio в 2025 году, или перешли на что-то более современное?

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

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

#междусобойчик
  • 👍 5
  • 😁 4
Post #6271 2.54K
📘 4 декабря стартует набор на курс «Математика для разработки AI-моделей»

Если вы работаете с моделями или хотите перейти в DS/ML, декабрь — идеальный момент закрыть фундаментальные пробелы.

На курсе вы разберёте ключевые разделы, которые лежат в основе современных AI-моделей: линейная алгебра, анализ, оптимизация, математический анализ, вероятности, статистика. Всё через практику в Python.

В программе живые занятия с экспертами AI-индустрии (SberAI, ВШЭ, WB&Russ), разбор реальных задач, квизы и финальный проект.

🌐 Формат: онлайн + доступ к записям

🎁 Бонусы: курс «Школьная математика» в подарок, бесплатный тест по математике

После лекций будет разбор ваших решений и возможность задать вопросы преподавателям.

👉 Записаться на курс
  • ❤ 3
  • 😁 3
Post #6270 2.42K
🍪 Чем ranges::iota отличается от std::iota под капотом?

C++20 принёс std::ranges::iota, который выглядит как улучшенная версия старого std::iota. Но это не просто API-обёртка — механизм работы совершенно другой.

✏️ std::iota — eager алгоритм:
std::iota(v.begin(), v.end(), 0);


Выполняется немедленно, проходит по контейнеру один раз, записывает значения. После вызова вектор заполнен.

✏️ ranges::iota — ленивая view:
auto view = std::views::iota(0, 10);


Возвращает view — лёгкий объект, который генерирует значения по требованию.

Внутри это просто два поля:

struct iota_view {
T current_;
T bound_;

T operator*() const { return current_; }
void operator++() { ++current_; }
};


Никакого выделения памяти! View не хранит элементы, он вычисляет их при обращении. Это O(1) по памяти против O(N) для std::iota.

💡 Композиция views:

auto result = views::iota(0, 100) 
| views::filter([](int x) { return x % 2 == 0; })
| views::take(10);


Компилятор inline'ит всю цепочку в один проход. Нет промежуточных контейнеров, нет лишних аллокаций. Просто счётчик и предикат.

❗️Практический вывод: если вам нужен материализованный контейнер — std::iota. Если цепочка преобразований — ranges::iota. Разные инструменты для разных задач.

❗️Ranges — это не замена алгоритмов, это другая парадигма.


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

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

#под_капотом
  • 👍 7
  • ❤ 2
Post #6269 2.69K
⚙️ ObjectBox: встраиваемая БД для C/C++, которая реально быстрая

Если вы устали от SQLite и ищете что-то более производительное для мобильных приложений или IoT-устройств — взгляните на ObjectBox.

📕 Что это за зверь?

Объектно-ориентированная встраиваемая база данных с открытым исходным кодом. Написана на C, но имеет отличные биндинги для C++.

❗ Почему это интересно:

• On-device векторная БД — управление векторными данными и быстрый vector search из коробки
• Минимальные ресурсы — бинарник всего ~1 МБ, идеально для IoT-шлюзов, микроконтроллеров, ECU
• Встроенные связи — отношения между объектами работают нативно
• Статическая типизация — проверки и оптимизации на этапе компиляции
• Автоматические миграции схемы — никаких update-скриптов
• ObjectBox Sync — синхронизация данных между устройствами и серверами

👉 GitHub

🤌 Бонусы для подписчиков:
• Скидка 40% на все курсы Академии
• Розыгрыш Apple MacBook
• Бесплатный тест на знание математики

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

#буст
  • 👍 4
  • ❤‍🔥 2
  • 🥰 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →