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

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

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

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

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

#WXSSA
Download Telegram
🐸 Подборка вакансий для C++-разработчиков за неделю

Backend Developer (Indexer) — от 12 500 и до 20 800 $ Удалёнка

Разработчик Rust/C++ — Удалёнка/Гибрид (Новосибирск)

C++ Developer — от 300 000 ₽ Удалёнка

Разработчик C++Удалёнка/Гибрид (Москва)

Junior C++ разработчик — от 150 000 и до 250 000 ₽ Гибрид (Санкт-Петербург)

Разработчик C — Офис/Удалёнка (Москва)


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

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

#вакансии
👍2
☠️ Задача на выходные: std::thread, который убивает программу при выходе из функции

Маленькая безобидная функция создаёт std::thread, что-то делает и в конце — terminate() и аварийное завершение всего приложения. Без единого явного throw в коде.

void DoWork(bool earlyExitCondition) {
std::thread worker([]() {
Sleep(2000);
std::cout << "Done\n";
});

if (earlyExitCondition) {
return; // worker все ещё joinable!
}

worker.join();
}


Задача: объясни, почему деструктор std::thread вызывает std::terminate, если поток всё ещё joinable, и предложи паттерн, который защищает от этого на всех путях выхода из функции, включая исключения.


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

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

#междусобойчик
😁1
🤖 Мы тут подготовили небольшую игру по ИИ-агентам

В ней нужно собрать AI-агента на LangGraph: выбрать узлы, пройти развилки и запустить собственный workflow.

Никакой теории — сразу практика. Можно наглядно увидеть, как работают агентные системы, проверьте свои знания или показать другим как это всё работает 🔥

🎁 За прохождение получите персональную скидку на курс. Чем больше баллов наберете — тем больше будет скидка.

Плюс сейчас действует предложение: покупаешь 1 курс, получаешь еще 2 любых в подарок. Для этого надо будет оставить заявку на сайте академии после прохождения игры.

🚀 Собрать своего AI-агента
🥱4😁1
📰 Свеженькое из мира C++

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

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

Свой malloc для ОС: от наивного списка до бинов — серия статей о написании своего аллокатора
EXPECT_DEATH не ловит исключение — разбираем как тесты обрабатывают падения
Hazard pointers без воды — разбор безопасного освобождения памяти в lock-free структурах
doctest: тесты прямо рядом с кодом — способ написания unit-тестов прямо в файле с бизнес логикой

📙 Ranges:

Проекции: Что такое проекция?

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

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

#свежак
😁1
Уже сегодня в 19:00 (МСК) стартует наш открытый урок!

Знаем, летом хочется отложить учёбу на осень. Но пока остальные отдыхают 😅, мы предлагаем без лишней конкуренции прокачать свой workflow и начать закрывать тикеты в три раза быстрее.

Тема:
«AI-инструменты в разработке: пишем код быстрее»


Мы покажем живой разбор реального проекта: как с помощью AI-ассистентов мгновенно разбираться в чужой кодовой базе, искать нужные участки и собирать Pull Request. Только рабочие промпты, которые сэкономят вам часы рутины.

🎙 Спикер — Ольга Лукьянова, руководитель команды в SourceCraft (18+ лет развивала инструменты в JetBrains и Huawei).

👉 Узнать, как ускорить разработку с AI
🍕 Проекции на поля структур

В прошлый раз разобрались, что такое проекция и зачем она нужна. Теперь — самый частый сценарий на практике: структура с кучей полей, и алгоритмы хочется гонять по разным из них, не плодя лямбды.

struct Person {
std::string name;
int age;
double height;
};

std::vector<Person> people = {
{"Алиса", 30, 165},
{"Борис", 25, 180},
{"Виктор", 35, 175},
};



🤠 Одна структура — много ключей

Вся прелесть в том, что один и тот же контейнер крутим по любому полю — меняем только &Person::поле:

// по возрасту
std::ranges::sort(people, std::less{}, &Person::age);
// Борис(25), Алиса(30), Виктор(35)

// самый высокий
auto tallest = std::ranges::max_element(people, std::less{}, &Person::height);
std::cout << tallest->name; // Борис

// найти по имени
auto found = std::ranges::find(people, "Алиса", &Person::name);
std::cout << found->age; // 30


Указатель &Person::age годится в проекции, потому что алгоритм зовёт её через std::invoke, а тот превращает его в p.age. Проекцией может быть что угодно вызываемое.

Заметьте: max_element и find вернули итератор на целого Person. Проекция выбирает ключ, но на выходе всегда исходный элемент.

‼️ sort сортирует на месте. Гоняете сниппеты подряд по одному people — каждый следующий видит уже переставленный вектор (max_element/find это не волнует).


👑 Компаратор + проекция = направление + ключ

Проекция говорит «по какому полю», компаратор — «в каком порядке»:

// по убыванию роста
std::ranges::sort(people, std::greater{}, &Person::height);
// Борис(180), Виктор(175), Алиса(165)


std::lessstd::greater — перевернули порядок, поле не трогали.
Компаратор можно сократить до {}, но не выбросить совсем:

std::ranges::sort(people, {}, &Person::age);   // ок
std::ranges::sort(people, &Person::age); // не компилируется


Проекция — третий аргумент, поэтому без компаратора &Person::age уедет в его слот. {} этот слот занимает и подставляет дефолт — а дефолт тут std::ranges::less, не std::less (на наших данных без разницы).


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

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

#константная_правильностьx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
🎮 Пишем игру на C++ и Qt с нуля

Серия для тех, кто хочет не читать про язык, а собрать рабочий проект — пусть и простой. 31 видео, от пустого окна до играбельного билда.

– Qt как обвязка: GUI, event loop и сигналы-слоты
– Низкий порог входа: рассчитано на тех, кто только осваивает C++
– Цельный результат: на выходе — законченная игра

👉 Плейлист


✏️ Подойдёт такой формат «учимся на проекте» для онбординга джунов, или для С++ полезнее сразу копать в стандарт и инструментарий?


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

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

#свежак
11😁1