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

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

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

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

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

#WXSSA
Download Telegram
🚀 Вышел Qt 6.11

23 марта Qt Company выпустила Qt 6.11 — промежуточный релиз стабильной ветки Qt 6. Полгода публичной поддержки + ещё полгода для коммерческих пользователей.

🦴 Главное в релизе:

🎨 Qt Canvas Painter — новый модуль для аппаратно ускоренной 2D-отрисовки через RHI (OpenGL, Vulkan, Metal, Direct3D). В тестах обгоняет QPainter+OpenGL: в 2× на ноутбуке, в 5× на бюджетном Android-планшете, в 10× на флагманском Samsung Galaxy Tab S8
🌐 Qt WebEngine — поддержка расширений Chromium
🔊 PipeWire — встроенный аудиобэкенд
🎮 Qt Quick 3D — добавлены SSGI и SSR (реалистичное освещение и отражения в реальном времени), улучшено сглаживание движущихся объектов
📊 Qt Graphs — новый тип CustomSeries для произвольных графиков, поддержка нескольких осей в 3D-графиках, пример Wind Turbine Dashboard
⚡️ Qt TaskTree (экспериментальный) — декларативный подход к асинхронным задачам на C++.
🔗 Qt OpenAPI — генерация HTTP-клиентского кода из YAML-спецификации OpenAPI
📱 Android 16 + поддержка Google Play Feature Delivery для разбивки приложений на пакеты
🖼 SVG/Lottie — поддержка морфинг-анимации, масок и символов SVG, стабилизация Qt Quick VectorImage

✏️ Подробнее


📍Навигация: ВакансииЗадачиСобесы

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

#свежак
🔥6👍21🙏1
😱 Если ваш продукт не умеет отдавать данные в формате, понятном AI-агенту, то вас просто не существует

Скрипт не будет кликать по красивым кнопкам в браузере, он уйдёт к конкуренту с нормальным API. Перестроить архитектуру под машинных клиентов — это уже не хайп, а необходимое условие сохранения конкурентоспособности.

Как адаптировать продукт и не исчезнуть из выдачи:

— интегрировать MCP и A2A-взаимодействие, чтобы агенты могли вас читать;
— научиться контролировать стоимость (лимиты, кэш, роутинг между моделями);
— настроить AgentOps: трейсинг, логирование и отлов регрессий.

Всё это ждёт вас на обновлённом курсе «Разработка AI-агентов». Мы специально сделали фокус на утилитарном инжиниринге и production-ready решениях.

Кстати, до 29 марта можно забрать курс с большой скидкой, и стоит поторопиться — мест на потоке всё меньше.

Зафиксировать цену и начать деплоить агентов без слива бюджета 👈
🥱6😁5🔥1
⚡️ Бесплатный генератор CMakeLists.txt

QuickCoderHub выкатил бесплатный браузерный генератор CMakeLists.txt для C++ проектов — никакой установки, работает полностью в браузере.


❗️ Ключевые моменты инструмента:

• визуальная настройка и автогенерация CMakeLists.txt прямо в браузере
• нулевые зависимости — не нужно ничего устанавливать на машину
• мгновенный результат без ручного написания конфигурационных файлов

Основной фокус — убрать рутину настройки системы сборки и дать разработчику готовый CMakeLists.txt под его проект за секунды.

Удобно при старте нового проекта, на собеседованиях, или когда нужно быстро поднять сборку без погружения в документацию CMake.

🍪 Генератор

📍Навигация: ВакансииЗадачиСобесы

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13💯1
🧩 Выходной челлендж: дочисти парсер команд

У тебя есть заготовка интерактивной оболочки — read-eval-print loop. Осталось дописать несколько ключевых частей.

#include <iostream>
#include <sstream>
#include <vector>
#include <string>

std::vector<std::string> parseCommand(const std::string& line) {
// TODO: разбить строку на токены по пробелам
// Учти: несколько пробелов подряд — не ошибка
}

void execute(const std::vector<std::string>& tokens) {
if (tokens.empty()) return;

if (tokens[0] == "echo") {
// TODO: вывести все аргументы через пробел
} else if (tokens[0] == "exit") {
exit(0);
} else {
// TODO: вывести "Unknown command: <имя команды>"
}
}

int main() {
std::string line;
while (true) {
std::cout << "> ";
if (!std::getline(std::cin, line)) break;
execute(parseCommand(line));
}
}


Задача: заполни три TODO.

💬 Покажи своё решение — особенно интересны варианты с std::istringstream и ручным разбором.


📍Навигация: ВакансииЗадачиСобесы

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

#междусобойчик
😁31
📰 Свеженькое из мира C++

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

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

Сколько стоит LOG_DEBUG()? — разбор на бэнчмарках сколько реально стоит отладка с помошью логов
promise_type::operator new — удобное управление аллокациями корутин
IntelliJ IDEA: продвинутый дебаг — удобный дебаг в IDE от JetBrains
sentinel_t — зачем ranges придумали конец диапазона как отдельный тип
Вышел Qt 6.11 — добавили много полезного функционала
Генератор от QuickCoderHub — бесплатный генератор CMakeLists.txt с удобным UI

🔹📍Навигация: ВакансииЗадачиСобесы

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

#свежак
👍1
👾 GDB: отладка без боли

Автор статьи разбирает GDB с нуля и показывает, как перестать бояться отладчика и находить баги за минуты, а не часы.

Ключевые моменты статьи:

• как backtrace за секунды показывает точное место падения и стек вызовов
• пошаговое выполнение кода с next/step и просмотр значений переменных прямо в рантайме
• TUI-режим — визуальный интерфейс GDB, про который почти нет статей на русском

Основной фокус — практика: реальный пример с Segmentation fault, который cout не помог бы поймать, а GDB раскрывает за 15 секунд через bt и print.

Статья написана для тех, кто только начинает или до сих пор избегает отладчика. Никакой магии — 80% задач решается 5–10 командами, которые разбираются по одной.

👉 Статья

📍Навигация: ВакансииЗадачиСобесы

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

#линкер_рекомендует
👍7
🧩 std::rotate_copy — зачем нужна копия, если есть rotate?

std::rotate_copy существует не для удобства — он закрывает конкретный случай, когда мутация исходника недопустима, но выделять промежуточный буфер вручную неудобно.

std::vector<int> src = {1, 2, 3, 4, 5};
std::vector<int> dst(src.size());

std::rotate_copy(src.begin(), src.begin() + 2, src.end(), dst.begin());
// src: {1, 2, 3, 4, 5} — не тронут
// dst: {3, 4, 5, 1, 2}


🔍 Под капотом:

rotate_copy — это ровно два вызова std::copy:

auto out = std::copy(middle, last, result);   // [middle, last) первыми
std::copy(first, middle, out); // [first, middle) следом


Никакой магии. Никаких swap. Просто два последовательных копирования.

Сложность: O(n) с одним проходом данных, без дополнительной памяти (кроме выходного диапазона).

💡 Когда это важно:

// Параллельная обработка: исходник читается несколькими потоками
std::rotate_copy(src.begin(), pivot, src.end(),
std::back_inserter(result));


⚠️ Диапазоны [first, last) и [result, ...) не должны перекрываться — иначе поведение не определено. В отличие от std::rotate, который работает in-place и перекрытий нет по определению.

❗️rotate_copy — частный случай общего принципа STL: алгоритмы с суффиксом _copy не мутируют исходник и пишут в отдельный output iterator.

📍Навигация:
ВакансииЗадачиСобесы

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

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62
👩‍💻 #include хотят переименовать в #please

Комитет ISO пришёл к выводу, что вежливое обращение к компилятору снижает количество ошибок компиляции на 12%.

#please <iostream>
#please <vector>


❗️ Компилятор тоже заслуживает уважения.

Попались? С первым апреля! 😁


📍Навигация:
ВакансииЗадачиСобесы

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

#развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
😁38❤‍🔥2😢21
🥳 C++ Ranges. Часть 1: Основы

«Если ты думаешь, что циклы — это нормально, ты просто ещё не видел Ranges»
— Каждый разработчик C++20, примерно через неделю после знакомства с библиотекой


🌸 Введение

Добро пожаловать в мир C++ Ranges — одного из самых мощных нововведений стандарта C++20.

Если ты когда-нибудь писал вот такой код:

std::vector<int> result;
for (const auto& x : data) {
if (x % 2 == 0) {
result.push_back(x * x);
}
}


..то ты знаешь, как это может быть многословно. Ranges позволяют написать то же самое так:

auto result = data
| std::views::filter([](int x) { return x % 2 == 0; })
| std::views::transform([](int x) { return x * x; });


Красиво? Ещё и эффективнее! Давай разберёмся, как это работает.


🍴 Что нам понадобится

Для работы со всеми примерами нужен компилятор с поддержкой C++20 (и лучше C++23):

#include <ranges> // std::views, std::ranges::*
#include <algorithm> // std::ranges::sort и другие


1️⃣ Что такое Range?

Range (диапазон) — это любой тип, у которого есть начало ( begin ) и конец ( end ). Всё, что ты
привык итерировать в цикле for , уже является диапазоном.

std::vector<int> v = {1, 2, 3, 4, 5}; // ✓ Range
std::string s = "hello"; // ✓ Range
int arr[] = {1, 2, 3}; // ✓ Range
std::list<double> l = {1.1, 2.2}; // ✓ Range


С технической точки зрения, тип R является диапазоном, если для него определены
std::ranges::begin(r) и std::ranges::end(r) . В C++ это выражается через концепт:

template<typename R>
concept range = requires(R& r) {
std::ranges::begin(r); // требуем наличие begin
std::ranges::end(r); // требуем наличие end
};



🍪 Категории диапазонов

input_range — однопроходный обход (Пример: поток ввода)
forward_range — многопроходный обход (Пример: std::forward_list)
bidirectional_range — обход в обе стороны (Пример: std::list)
random_access_range — доступ за O(1) по индексу (Пример: std::deque)
contiguous_range — данные в непрерывной памяти (Пример: std::vector , массив)


🐸 Продолжение следует... Дальше разберём, какие алгоритмы можно использовать с Ranges.

📍Навигация: ВакансииЗадачиСобесы

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

#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍7🙏2
😎 Топ-вакансий для C++ разработчиков за неделю

C++ Developer (Gates Team) — от 5 000 € Офис (Дубай, Амстердам)

Старший разработчик C++ — от 350 000 и до 500 000 ₽ Удалёнка

Middle+/Senior C++ Developer — от 2 500 и до 3 500 $ Удалёнка

✍️ Еще больше топовых вакансий — в нашем канале C++ jobs

📍Навигация: ВакансииЗадачиСобесы

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

#буст
1👍1😁1
✌🏻 У нас две новости — хорошая и плохая!

Хорошая: Ваших знаний, скорее всего, хватит, чтобы собрать рабочую демку AI-агента в Colab. 🫡

Плохая: Вы вряд ли выведете его в прод, не обанкротившись на токенах и не слив базу. 🤯

Для защиты от таких сценариев мы полностью пересобрали курс «Разработка AI-агентов». Теперь внутри плотная работа с экономикой ресурсов, дебаг через time-travel в LangGraph, извлечение данных из кривых сканов для RAG и комплаенс по 152-ФЗ.

Если всё ещё сомневаетесь, послушайте голосовое от спикера курса Влада Прошинского, где он объясняет, как правильно тестировать агентов перед релизом.


Программа курса, полный состав спикеров и другие подробности 👈🏻

ВАЖНО! До 5 апреля на курс действует скидка, но свободные места могут закончиться раньше.
😁2🥱1
🧩 Задача на выходные: правильная ли это BST?

Классическая ловушка на собеседованиях. Этот код проверяет BST неправильно:

bool isValidBST(TreeNode* node) {
if (!node) return true;
if (node->left && node->left->val >= node->val) return false;
if (node->right && node->right->val <= node->val) return false;
return isValidBST(node->left) && isValidBST(node->right);
}



Для дерева:
    5
/ \
1 4
/ \
3 6


Функция вернёт true. Но это не BST!

✏️ Объясни баг и перепиши функцию корректно.


📍Навигация:
ВакансииЗадачиСобесы

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

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2🤔1
💼 30 сайтов для поиска работы в IT в 2026 году

Рынок IT-вакансий давно вышел за пределы hh.ru и LinkedIn. Одни площадки заточены под стартапы и equity-офферы, другие продвигают прозрачные зарплаты без буллшита, третьи созданы специально для первой работы после универа. В этом гайде собраны 30 джоб-сайтов с описанием, кому и зачем они подходят.

👉 Продолжение...

📍Навигация: ВакансииЗадачиСобесы

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

#буст
😁3
🌻 C++26 официально готов!

На встрече международного комитета по стандартизации ISO C++ в Кройдоне поставлена финальная точка — стандарт C++26 сформирован. Осталось пройти формальные процедуры ISO, и мы получим один из самых насыщенных релизов за последние годы.


❗️Что войдёт в C++26:

• Reflection
• Контракты
• SIMD и линейная алгебра
• Расширенный constexpr
• Hardening (защитные механизмы)
• Hazard Pointer и RCU
• Executors
• И многое другое


‼️ Несколько интересных деталей из принятых изменений:

🔍 std::is_within_lifetime — теперь умеет не только проверять валидность объекта в compile-time, но и давать информацию о возможности downcast. Это открывает новый класс consteval-функций, позволяющих «расспрашивать» компилятор о скрытых свойствах программы.

🔒 std::atomic_ref::address() теперь возвращает void* вместо T* — чтобы исключить целый класс трудноуловимых ошибок в многопоточном коде.

⚠️ std::views::filter получил частичное исправление подводных камней. Новая рекомендация: всегда использовать std::views::as_input | перед фильтром. Полноценный std::views::safe_filter появится только в C++29, но его несложно реализовать самостоятельно уже сейчас.


Российские разработчики тоже внесли вклад: исправлена переносимость <random> для uint8_t, оптимизирована индирекция при использовании std::function_ref во фреймворке userver.


Что дальше? Комитет уже смотрит в сторону C++29: std::cstring_view, profiles, units и долгожданный pattern matching.


👉 Более подробный обзор


📍Навигация: ВакансииЗадачиСобесы

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

#буст
💯5👍21😢1