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

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

Відкрити в Telegram

Все самое полезное для плюсовика и сишника в одном канале. Как запустить своего ии-агента: https://clc.to/tvpmDQ По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #WXSSA

Показати більше

📈 Аналітичний огляд Telegram-каналу Библиотека C/C++ разработчика | cpp, boost, qt

Канал Библиотека C/C++ разработчика | cpp, boost, qt (@cppproglib) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 17 148 підписників, посідаючи 7 716 місце в категорії Технології та додатки та 39 185 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 17 148 підписників.

За останніми даними від 23 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -16 796, а за останні 24 години на 0, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 8.89%. Протягом перших 24 годин після публікації контент зазвичай збирає 5.11% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 1 525 переглядів. Протягом першої доби публікація в середньому набирає 877 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 5.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як c++, навигация, компилятор, удалёнка, developer.

📝 Опис та контентна політика

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
Все самое полезное для плюсовика и сишника в одном канале. Как запустить своего ии-агента: https://clc.to/tvpmDQ По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #WXS...

Завдяки високій частоті оновлень (останні дані отримано 24 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

17 148
Підписники
Немає даних24 години
-87 днів
-16 79630 день
Архів дописів
🐸 Подборка вакансий для C++-разработчиков за неделю C++ Developer — Офис (Санкт-Петербург) Программист С++ — Офис (Москва) C++ RTOS (Networking) Developer — Удалённо 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #вакансии

🎮 Пишем игру на C++ и Qt с нуля Серия для тех, кто хочет не читать про язык, а собрать рабочий проект — пусть и простой. 31
🎮 Пишем игру на C++ и Qt с нуля Серия для тех, кто хочет не читать про язык, а собрать рабочий проект — пусть и простой. 31 видео, от пустого окна до играбельного билда. – Qt как обвязка: GUI, event loop и сигналы-слоты – Низкий порог входа: рассчитано на тех, кто только осваивает C++ – Цельный результат: на выходе — законченная игра 👉 Плейлист ✏️ Подойдёт такой формат «учимся на проекте» для онбординга джунов, или для С++ полезнее сразу копать в стандарт и инструментарий? 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #свежак

🍕 Проекции на поля структур В прошлый раз разобрались, что такое проекция и зачем она нужна. Теперь — самый частый сценарий на практике: структура с кучей полей, и алгоритмы хочется гонять по разным из них, не плодя лямбды.
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

⏰ Уже сегодня в 19:00 (МСК) стартует наш открытый урок! Знаем, летом хочется отложить учёбу на осень. Но пока остальные отдых
Уже сегодня в 19:00 (МСК) стартует наш открытый урок! Знаем, летом хочется отложить учёбу на осень. Но пока остальные отдыхают 😅, мы предлагаем без лишней конкуренции прокачать свой workflow и начать закрывать тикеты в три раза быстрее. Тема:
«AI-инструменты в разработке: пишем код быстрее»
Мы покажем живой разбор реального проекта: как с помощью AI-ассистентов мгновенно разбираться в чужой кодовой базе, искать нужные участки и собирать Pull Request. Только рабочие промпты, которые сэкономят вам часы рутины. 🎙 Спикер — Ольга Лукьянова, руководитель команды в SourceCraft (18+ лет развивала инструменты в JetBrains и Huawei). 👉 Узнать, как ускорить разработку с AI

📰 Свеженькое из мира C++ Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и инт
📰 Свеженькое из мира C++ Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++. 😎 Интересное: Свой malloc для ОС: от наивного списка до бинов — серия статей о написании своего аллокатора EXPECT_DEATH не ловит исключение — разбираем как тесты обрабатывают падения Hazard pointers без воды — разбор безопасного освобождения памяти в lock-free структурах doctest: тесты прямо рядом с кодом — способ написания unit-тестов прямо в файле с бизнес логикой 📙 Ranges: Проекции: Что такое проекция? 🔹📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #свежак

🤖 Мы тут подготовили небольшую игру по ИИ-агентам В ней нужно собрать AI-агента на LangGraph: выбрать узлы, пройти развилки
🤖 Мы тут подготовили небольшую игру по ИИ-агентам В ней нужно собрать AI-агента на LangGraph: выбрать узлы, пройти развилки и запустить собственный workflow. Никакой теории — сразу практика. Можно наглядно увидеть, как работают агентные системы, проверьте свои знания или показать другим как это всё работает 🔥 🎁 За прохождение получите персональную скидку на курс. Чем больше баллов наберете — тем больше будет скидка. Плюс сейчас действует предложение: покупаешь 1 курс, получаешь еще 2 любых в подарок. Для этого надо будет оставить заявку на сайте академии после прохождения игры. 🚀 Собрать своего AI-агента

☠️ Задача на выходные: 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++ разработчика #междусобойчик

🐸 Подборка вакансий для 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++ разработчика #вакансии

🤖 Используешь AI для написания кода? В Яндексе покажут, как применять AI для реальных задач разработки. 23 июня в 19:00 совм
🤖 Используешь AI для написания кода? В Яндексе покажут, как применять AI для реальных задач разработки. 23 июня в 19:00 совместно с Яндексом проведём открытый урок «AI-инструменты в разработке: как писать код быстрее с помощью ассистентов». Спикер — Ольга Лукьянова, руководитель команды поиска и навигации по коду в SourceCraft. Более 18 лет развивала инструменты для разработчиков в JetBrains и руководила разработкой IDE в Huawei. Что получишь на уроке: — поймёшь, как использовать AI-ассистентов и облачных агентов в работе; — научишься быстрее разбираться в новых проектах и кодовой базе; — узнаешь, какие задачи стоит отдавать AI и как получать качественный результат; — увидишь полный workflow работы с AI: от постановки задачи до код-ревью. На уроке — живой разбор реального проекта с кодом. Ольга покажет промпты из рабочих сценариев и ответит на ваши вопросы в Q&A. ⚠️ Количество мест ограничено 🗓️ Когда: 23 июня, 19:00 (МСК) 👉 Занять место на открытом уроке

Пояснение: Автор пишет: «Я иногда оставляю висящий else просто как угрозу компилятору — чтобы он точно выполнил этот if, а не
Пояснение: Автор пишет: «Я иногда оставляю висящий else просто как угрозу компилятору — чтобы он точно выполнил этот if, а не то...» В обычном английском фраза «or else» означает угрозу — «а не то...» / «а иначе пожалеешь» 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #развлекалово

😊 doctest: тесты прямо рядом с кодом Что если тесты можно писать в том же файле, что и реализацию, без потери скорости сборки? Именно эту идею продаёт doctest. Это самый быстрокомпилируемый фреймворк из популярных: подключение заголовка почти не утяжеляет сборку. А с флагом DOCTEST_CONFIG_DISABLE все тесты вырезаются из релизного бинарника полностью. Такой подход меняет привычку: проверку можно положить сразу под функцию, пока логика свежа в голове. Тест становится живой документацией, а не отдельным проектом в папке tests/.
int add(int a, int b) { return a + b; }
TEST_CASE("add") { CHECK(add(2, 2) == 4); }
✏️ Держите ли вы тесты отдельно от кода — или допускаете их соседство в одном файле? 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #константная_правильностьx

⏰ Уже сегодня в 19:00 (МСК) стартует открытый урок! Тема:
«Мультиагентные системы: почему большинство архитектур переусложнены»
🔥 За 90 минут разберёмся, когда действительно стоит строить мультиагентную систему, а когда она только добавляет сложность, расходы и новые точки отказа. Поговорим о критериях выбора архитектуры, типичных ошибках и ограничениях современных ИИ-агентов, которые важно учитывать ещё до внедрения в продукт. 🎙️ Спикер — Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru. 🎁 Для всех участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов». 👉 Успей присоединиться к уроку

🧵 Hazard pointers без воды Разбор безопасного освобождения памяти в lock-free структурах: почему нельзя просто delete узел,
🧵 Hazard pointers без воды Разбор безопасного освобождения памяти в lock-free структурах: почему нельзя просто delete узел, который кто-то ещё держит. • Гонка: X взял указатель на вершину и уснул, Y удалил узел, X читает по освобождённому адресу. UB • ABA: аллокатор переиспользует адрес, CAS видит «тот же» указатель и возвращает мёртвое значение. Развал структуры • Идея: поток публикует адрес в атомарный hp_ptr. Пока опубликован — узел не удаляют • Удаление откладывается: кандидаты копятся в retired_list, реальный delete идёт позже, в фазе scan Scan собирает все активные hp_ptr под shared_mutex, сортирует и бинарным поиском проверяет кандидатов. Нет в активных — deleter вызывается. 👉 Разбор 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #свежак

🎱 Проекции: Что такое проекция? Одна из полезнейших тем в C++ диапазонах — это проекции. Проекция — это функция, которая «извлекает» ключ из элемента перед тем, как алгоритм с ним работает. Подавляющее большинство алгоритмов из std::ranges принимают необязательный параметр proj; по умолчанию там std::identity — элемент идёт как есть. ⏰ ranges::sort — сортировка по полю Возьмём те самые задачи из прошлого поста:
struct Task { std::string name; int priority; };
std::vector<Task> tasks = { {"Код", 1}, {"Деплой", 3}, {"Тесты", 2} };

std::ranges::sort(tasks, {}, &Task::priority);
// порядок: Код(1), Тесты(2), Деплой(3)
Здесь {} — компаратор по умолчанию (ranges::less), а &Task::priority — проекция. Для каждой пары алгоритм считает less(a.priority, b.priority). Помните, в свёртках, чтобы сложить по priority, пришлось писать лямбду? Тут поле достаёт сама проекция. 🎨 Проекция по указателю на член Самый частый случай — &Тип::поле. И работает не только в sort:
// найти задачу с priority == 3
auto it = std::ranges::find(tasks, 3, &Task::priority);
// *it == Task{"Деплой", 3}

// посчитать задачи с priority > 1
auto n = std::ranges::count_if(tasks,
    [](int p){ return p > 1; }, &Task::priority);
// n == 2
Обратите внимание на порядок: у find проекция идёт сразу после искомого значения (компаратора у него нет), а у count_if — после предиката. У каждого алгоритма свой набор параметров, проекция в нём всегда последняя. 🧁 Проекцией может быть что угодно вызываемое Не только поле. Подойдёт указатель на метод, лямбда, свободная функция — всё, что переваривает std::invoke:
std::vector<std::string> v = {"apple", "fig", "banana"};
std::ranges::sort(v, {}, &std::string::size);   // по длине
// "fig"(3), "apple"(5), "banana"(6)

std::vector<int> nums = {-5, 2, -1, 3};
std::ranges::sort(nums, {}, [](int x){ return std::abs(x); }); // по модулю
// -1, 2, 3, -5
🎁 Проекция меняет ВЗГЛЯД, но не результат Это главное, что надо уложить в голове. Проекция влияет только на то, ПО ЧЕМУ алгоритм принимает решения. Возвращает он по-прежнему исходные элементы, а не спроецированные значения:
auto top = std::ranges::max(tasks, {}, &Task::priority);
// top — это Task{"Деплой", 3}, а НЕ число 3
// (и это копия: max возвращает элемент по значению)

auto it = std::ranges::min_element(tasks, {}, &Task::priority);
// *it — Task{"Код", 1}, итератор на сам элемент (копии нет)
То есть проекция — это «по какому ключу», а не «во что превратить». Если нужно именно превратить элементы — это уже views::transform. 🍕 У бинарных алгоритмов проекций две Там, где сравниваются два диапазона (equal, mismatch, …), проекций тоже две — по одной на каждый вход:
std::vector<Task> a = { {"X", 1}, {"Y", 2} };
std::vector<Task> b = { {"A", 1}, {"B", 2} };

// равны ли списки по приоритетам, игнорируя имена?
bool same = std::ranges::equal(a, b, {}, &Task::priority, &Task::priority);
// {} — предикат по умолчанию, дальше proj1 и proj2
// true: 1 == 1, 2 == 2
‼️ Несколько подводных камнейПорядок аргументов. proj идёт после компаратора, а не вместо. sort(tasks, &Task::priority) — указатель на поле не годится в компараторы → простыня ошибок. Правильно: sort(tasks, {}, &Task::priority). • Проекцию зовут много раз. В sort — на каждом сравнении, O(n log n) вызовов. Тяжёлую (парсит строку) выгоднее посчитать заранее и сортировать по готовым ключам. • Проекция ≠ преобразование вывода. На выходе всегда исходные элементы. Превратить их — это views::transform. • Свёртки без проекций. У fold_* параметра proj нет (хотя у for_each и transform есть). «Свернуть по полю» — только лямбдой или через views::transform. 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #константная_правильностьx