ch
Feedback

不要被骗子欺骗!Telemetrio 会找到并标记这些频道 👉 如果想查看标记,请订阅

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

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

前往频道在 Telegram

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

显示更多

📈 Telegram 频道 Библиотека C/C++ разработчика | cpp, boost, qt 的分析概览

频道 Библиотека C/C++ разработчика | cpp, boost, qt (@cppproglib) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 16 819 名订阅者,在 技术与应用 类别中位列第 7 686,并在 俄罗斯 地区排名第 39 072 位。

📊 受众指标与增长动态

自 невідомо 创建以来,项目保持高速增长,吸引了 16 819 名订阅者。

根据 25 十月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -40,过去 24 小时变化为 -7,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 10.25%。内容发布后 24 小时内通常能获得 4.49% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 1 724 次浏览,首日通常累积 756 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 2。
  • 主题关注点: 内容集中在 c++, навигация, компилятор, удалёнка, developer 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
“Все самое полезное для плюсовика и сишника в одном канале. Как запустить своего ии-агента: https://clc.to/tvpmDQ По рекламе: @tproger_sales_bot Обратная связь: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #W...”

凭借高频更新(最新数据采集于 26 十月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

16 819
订阅者
-724 小时
-77 天
-4030 天
帖子存档
🥳 Ranges в C++23 C++23 значительно расширил библиотеку Ranges. Рассмотрим важнейшие добавления. 1️⃣ ranges::to — материализация диапазонов Раньше преобразование view в контейнер было неудобным:
// C++20: нужно было делать так
std::vector<int> v = {1, 2, 3, 4, 5};
auto view = v | views::filter([](int x) { return x > 2; });

std::vector<int> result(view.begin(), view.end()); // громоздко!
C++23 добавляет std::ranges::to:
// C++23: красиво и лаконично
auto result = v
    | views::filter([](int x) { return x > 2; })
    | std::ranges::to<std::vector>();
// result = {3, 4, 5}

// Можно указать тип элементов явно
auto strs = views::iota(1, 6)
    | views::transform([](int x){ return std::to_string(x); })
    | std::ranges::to<std::vector<std::string>>();
// strs = {"1", "2", "3", "4", "5"}

// Работает и с другими контейнерами
auto s = some_range | std::ranges::to<std::set>();
auto m = pairs_range | std::ranges::to<std::map>();
2️⃣ Новые адаптеры C++23 views::zip_transform — zip + transform в одном
std::vector<int> a = {1, 2, 3};
std::vector<int> b = {10, 20, 30};

// Попарная сумма
auto sums = views::zip_transform(std::plus{}, a, b);
// 11, 22, 33
views::adjacent — соседние N-ки
std::vector<int> v = {1, 2, 3, 4, 5};

// Пары соседних элементов
for (auto [a, b] : v | views::adjacent<2>) {
    std::cout << "(" << a << "," << b << ") "; // (1,2) (2,3) (3,4) (4,5)
}

// Тройки
for (auto [a, b, c] : v | views::adjacent<3>) {
    std::cout << a+b+c << " "; // 6 9 12
}
views::adjacent_transform — скользящая функция
std::vector<int> v = {1, 2, 3, 4, 5};

// Скользящий максимум из двух соседних элементов
auto sliding_max = v | views::adjacent_transform<2>(
    [](int a, int b) { return std::max(a, b); }
);
// 2, 3, 4, 5
views::slide — скользящее окно
std::vector<int> v = {1, 2, 3, 4, 5};

// Скользящее окно размером 3
for (auto window : v | views::slide(3)) {
    for (int x : window) std::cout << x << " ";
    std::cout << "| ";
}
// 1 2 3 | 2 3 4 | 3 4 5 |
views::cartesian_product — декартово произведение
std::vector<int> xs = {1, 2};
std::vector<char> ys = {'a', 'b', 'c'};

for (auto [x, y] : views::cartesian_product(xs, ys)) {
    std::cout << "(" << x << "," << y << ") ";
}
// (1,a) (1,b) (1,c) (2,a) (2,b) (2,c)
3️⃣ std::generator — корутины как диапазоны C++23 добавляет std::generator<T> — корутину, которая является диапазоном:
#include <generator> // C++23

std::generator<int> fibonacci() {
    int a = 0, b = 1;
    while (true) {
        co_yield a;
        auto next = a + b;
        a = b;
        b = next;
    }
}

// Использование как обычного диапазона!
for (int f : fibonacci() | views::take(10)) {
    std::cout << f << " "; // 0 1 1 2 3 5 8 13 21 34
}

// Можно комбинировать с другими адаптерами
auto big_fibs = fibonacci()
    | views::filter([](int x) { return x > 100; })
    | views::take(5);
❗️Это мощно: теперь можно писать генераторы в естественном императивном стиле, а использовать их — в функциональном стиле через конвейеры. 📍Навигация: Вакансии • Задачи • Собесы Библиотека C/C++ разработчика #константная_правильность

🤢 Чем больше разработчиков в команде начинают пользоваться Claude Code, тем заметнее одна проблема: кодовая база перестаёт в
🤢 Чем больше разработчиков в команде начинают пользоваться Claude Code, тем заметнее одна проблема: кодовая база перестаёт выглядеть как работа одной команды. Где-то есть тесты, где-то их забыли. Где-то агент следует архитектуре проекта, где-то предлагает решение, которое с ней не сочетается. ⚠️ И это не проблема Claude Code. Он просто следует тому контексту, который получает от каждого разработчика. Завтра покажем, как передать AI инженерный контекст команды и не превратить его внедрение в ещё один источник хаоса. 🗓 23 июля, 19:00 МСК Бесплатно. 60 минут доклада + 30 минут вопросов. 🔗 Занять место на вебинаре и разобраться, почему так происходит 🏃‍♀️ Proglib Academy

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

Что такое loop unrolling (развёртывание цикла)?
Anonymous voting

😸 Каждый разработчик подходит к задаче со своим опытом: помнит прошлые решения, знает ограничения проекта и понимает, какой
😸 Каждый разработчик подходит к задаче со своим опытом: помнит прошлые решения, знает ограничения проекта и понимает, какой код команда пропустит на ревью. Для человека это естественная часть работы. У Claude Code этого контекста по умолчанию нет — только задача и инструкции, которые ему дали.
Поэтому в большой команде недостаточно просто выбрать хорошую модель. ❗️ Нужно ещё объяснить ей, как у вас устроена разработка: какие подходы приняты, что обязательно проверять и по каким правилам принимать решения.
🗓 23 июля в 19:00 МСК поговорим об этом на бесплатном вебинаре с Алексеем Жиряковым — он Executive Director в Сбере, руководит GenAI Data Platform, и с этой проблемой сталкивался не раз 🔥 Покажет живое демо, разберём, как встроить AI в процесс разработки так, чтобы он реально помогал, а не добавлял ещё один повод для споров на ревью. 🔗 Занять место на вебинаре 🏃‍♀️ Proglib Academy

✏️ Если вы уже работаете с Claude Code, Cursor или Copilot, этот вебинар будет особенно полезен. Разберут, как превратить AI из инструмента для отдельных задач в часть инженерного процесса ⬇️

🔀 Как айтишнику оформить отношения с работодателем: разбираем ТД, ГПХ, самозанятость и ИП Подробный гайд по видам трудоустро
🔀 Как айтишнику оформить отношения с работодателем: разбираем ТД, ГПХ, самозанятость и ИП Подробный гайд по видам трудоустройства в IT-сфере. Разбираем особенности, налоговые ставки, социальные гарантии и подводные камни каждого из популярных форматов сотрудничества. 👉 Статья Азбука айтишника #свежак

🧑‍💻 Учиться агентной разработке — у тех, кто уже внедряет её в бигтехе Курс «ИИ для разработчиков» ведут практики из ведущи
🧑‍💻 Учиться агентной разработке — у тех, кто уже внедряет её в бигтехе Курс «ИИ для разработчиков» ведут практики из ведущих российских IT-компаний 🔥 🔵 Они прошли путь от первых экспериментов с AI до рабочих процессов, в которых агенты помогают команде писать код, готовить PR и быстрее доводить задачи до продакшена. В ближайшее время познакомим вас с каждым преподавателем. Программа курса — по ссылке 🎹 🏃‍♀️ Proglib Academy

📍 Курс — это не только темы и домашние задания Во многом его ценность определяет опыт тех, кто его разрабатывает и ведёт. Об этом как раз новый пост Proglib Academy 🔥

🫡 Один и тот же запрос к AI можно выполнить двумя способами — и получить совершенно разный результат. 1️⃣ способ — просто по
🫡 Один и тот же запрос к AI можно выполнить двумя способами — и получить совершенно разный результат. 1️⃣ способ — просто попросить написать код. Модель может сгенерировать рабочее решение, но именно на этапе проверки часто всплывают пропущенные edge case’ы, ошибки обработки или проблемы с тестами. 2️⃣ способ — дать агенту цикл Think → Act → Observe. Он не останавливается после первой попытки: планирует действия, проверяет результат и, если находит ошибку, исправляет её и пробует снова. Самое интересное, что разница здесь не столько в модели ❕ Claude, GPT или другая LLM могут быть одинаковыми. Разницу создаёт инженерная система вокруг них. 📅 Именно это разберём 23 июля в 19:00 (МСК) на бесплатном вебинаре с Алексеем Жиряковым (Executive Director в Сбере, GenAI Data Platform, ex-CTO Stream и KION). На живом демо покажем, как один и тот же запрос работает без агентной системы и с ней 🔥 🔗 Регистрация 🏃‍♀️ Proglib Academy

🍙 Sentinel: нестандартный конец диапазона В прошлом посте stride_view отдавал из end() пустую stride_sentinel{}, а итератор сам таскал внутри end_ и сравнивался с ним. Это уже был sentinel — просто самый скромный его вид. Сегодня посмотрим, на что sentinel способен, когда условие конца живёт в нём самом. 🍬 Итератор говорит «где», sentinel — «когда стоп» Обычный end() в STL — это итератор на позицию за последним элементом. Чтобы его получить, позицию надо знать заранее. Sentinel ломает это правило. Он не хранит позицию — он хранит условие остановки. Итератор шагает вперёд и на каждом шаге как бы спрашивает: «мы уже приехали?». Sentinel отвечает, глядя не на свой адрес, а на то, куда сейчас показывает итератор. 🍴 Классика жанра — C-строки У C-строки нет заранее известного конца: он определяется на лету — идём, пока не встретим '\0'. Идеальный кейс для sentinel:
struct null_sentinel_t {
    // 🔴 Сравниваем не адреса, а СОДЕРЖИМОЕ:
    // итератор == концу, если он смотрит на '\0'
    bool operator==(const char* ptr) const { return *ptr == '\0'; }
};

inline constexpr null_sentinel_t null_sentinel{};

struct cstring_range {
    const char* ptr;
    const char*     begin() const { return ptr; }            // обычный итератор
    null_sentinel_t end()   const { return null_sentinel; }  // sentinel другого типа!
};

// Использование
const char* str = "hello";
for (char c : cstring_range{str}) {
    std::cout << c;  // hello
}
❗️Обрати внимание: begin() возвращает const char*, а end() — null_sentinel_t. Разные типы! Range-based for это разрешает ещё с C++17, а C++20 добавляет it != null_sentinel сам разворачивается в !null_sentinel.operator==(it). Пишешь один operator== — и обе стороны, и != работают бесплатно. ❓ Зачем вообще так заморачиваться 🥝 Ленивый конец. Не нужно звать strlen и проходить строку дважды — конец «находится» прямо во время итерации. ♾️ Бесконечные диапазоны. У генераторов, потоков, views::iota без верхней границы конца-позиции просто нет. Sentinel — единственный способ вообще описать такой диапазон. ⚡️ Дешёвое сравнение. Проверить условие (== '\0', счётчик дошёл до нуля) часто быстрее, чем сравнивать два итератора. 🥳 В стандартной библиотеке это уже есть Свой sentinel писать нужно не всегда. В STL живёт std::default_sentinel_t (объект std::default_sentinel) — та самая пустая заглушка, которой пользуются counted_iterator, istream_view и куча вьюх. А для честно бесконечных диапазонов есть std::unreachable_sentinel — «мы не доедем никогда», и компилятор с чистой совестью выкидывает проверки границ. 🫰 std::ranges поддерживает нестандартные sentinel-ы из коробки: достаточно, чтобы для пары <итератор, sentinel> выполнялся концепт std::sentinel_for — и твой тип поедет во все алгоритмы ranges наравне с обычными итераторами. 📍Навигация: Вакансии • Задачи • Собесы Библиотека C/C++ разработчика #под_капотом

💡 Свой парсер C++ на самодельном DSL Компиляция большого C++ проекта разрастается до неприличных времён, но можно написать замену Clang/GCC/CL.EXE, начав с парсера. • Парсер не пишется руками: грамматика на своём языке QapDSLv2 • На выходе CST, а не AST — с пробелами и комментариями • Покрыто почти всё: 16 уровней приоритетов операторов, шаблоны, лямбды, структурное связывание. • Неоднозначности решены грубо: T<1>(2) всегда шаблон, struct S {...}; ❗️Автор честен: проект вот-вот упрётся в лимит памяти при собственной сборке и рискует тихо умереть, но с другой стороны со стороны погружения в тему интересен. Код открыт на GitHub. 🔥 Статья 📍Навигация: Вакансии • Задачи • Собесы Библиотека C/C++ разработчика #под_капотом

🍴 Rule of Zero: лучший Fab Four — тот, что ты не писал Идеальный класс не содержит ни одного из пяти методов. Это не лень — это архитектурный принцип, который снижает количество багов. 🍒 Rule of Zero Если каждое поле само корректно управляет своим ресурсом (std::string, std::vector, std::unique_ptr), то классу-агрегату не нужны свои Fab Four. Компилятор сгенерирует правильные почленные версии.
struct User {
    std::string name;
    std::vector<int> scores;
    std::unique_ptr<Db> conn;
};
// move + dtor — сгенерированы, корректны и БЕСПЛАТНЫ
// copy — корректно УДАЛЁН: unique_ptr некопируем → User тоже (move-only тип)
❗️Почему работает: почленное перемещение вызовет move у каждого поля. string украдёт буфер, vector — массив, unique_ptr — указатель. Тебе не нужно писать ни строки. ❗️ Ключевое условие — не объявлять деструктор. И ~User(){}, и ~User() = default одинаково опасны: любой user-declared деструктор отключает неявную генерацию move. ✏️ Твои классы владеют new/delete напрямую — или прячут их в unique_ptr и живут по Rule of Zero? 📍Навигация: Вакансии • Задачи • Собесы Библиотека C/C++ разработчика #под_капотом

🔥 Курс «Разработка ИИ-агентов» стартовал, но вы еще успеваете присоединиться! Мы только начали, а первый практический воркшо
🔥 Курс «Разработка ИИ-агентов» стартовал, но вы еще успеваете присоединиться! Мы только начали, а первый практический воркшоп пройдет только 23 июля. До этого времени вы спокойно успеете изучить материалы и нагнать группу. 💼 Главная фишка: финальный проект в портфолио:
В финальном проекте вы сможете выбрать один из двух вариантов: реализовать свою идею или решить задачу от партнера курса — крупной российской финтех-компании. Вы будете работать с датасетом, построенным по реальным сценариям, получите бизнес-контекст и продовые ограничения. В результате соберете AI-агента, который станет сильным проектом для портфолио.
🎁 Упомяните менеджеру специальное предложение «3 курса по цене 1»: Берете VIP-тариф — получаете курс «Разработка ИИ-агентов», хардкорный «AgentOps» и ещё один курс на выбор. Выгода 129.000 ₽! Двери потока вот-вот закроются окончательно. Успейте забрать стек курсов и начать работу над реальным проектом 🔗 Занять место и забрать 3 курса

🤖 У нас уже отобрали работу роботы или есть другие угрозы? Забудь про апокалиптичные прогнозы «AI отберет работу». Реальност
🤖 У нас уже отобрали работу роботы или есть другие угрозы? Забудь про апокалиптичные прогнозы «AI отберет работу». Реальность интереснее и коварнее: появились новые правила игры, новые способы обмана заказчиков и новая ценность для тех, кто умеет думать головой. Разбираю пять таких сдвигов. 👉 Статья Азбука айтишника #свежак