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

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

前往频道在 Telegram

Все самое полезное для плюсовика и сишника в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/d6cd2932 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #WXSSA

显示更多

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

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

📊 受众指标与增长动态

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

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

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

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Все самое полезное для плюсовика и сишника в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/d6cd2932 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #WXSSA

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

23 194
订阅者
-824 小时
-10 7557
-10 78830
帖子存档
🔥 Найди баг: копирование строки сломало указатель
#include <string>
#include <iostream>

struct Token {
    std::string value;
    const char* ptr;

    Token(const std::string& s) : value(s), ptr(value.data()) {}
};

int main() {
    Token t1("hi");
    Token t2 = t1; // копируем

    std::cout << t1.ptr << "\n"; // "hi"
    std::cout << t2.ptr << "\n"; // ???
}
‼️ Задача: найди баг (если он есть), объясни, почему он связан с SSO, и предложи исправление. 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #междусобойчик

🩹 Конвейеры: оператор | То, ради чего стоит использовать Ranges — это конвейеры (pipelines). Оператор | позволяет обрабатывать данные через цепочку преобразований: 🥲 Как это выглядело до C++20:
std::vector<int> temp, result;
std::copy_if(numbers.begin(), numbers.end(), std::back_inserter(temp),
             [](int n) { return n % 2 == 0; });
std::transform(temp.begin(), temp.end(), std::back_inserter(result),
               [](int n) { return n * n; });
❗️ Вложенные алгоритмы, временные буферы, много шума. 🙂 С конвейером (C++20):
#include <ranges>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    // Конвейер: фильтруем чётные → возводим в квадрат → берём первые 3
    auto result = numbers
        | std::views::filter([](int n) { return n % 2 == 0; })
        | std::views::transform([](int n) { return n * n; })
        | std::views::take(3);

    for (int x : result) {
        std::cout << x << " "; // 4 16 36
    }
    std::cout << "\n";
}
❗️ result — это не вектор, а «вид» (view). Вычисления происходят лениво — только в момент итерации в цикле for. Исходный вектор numbers остаётся нетронутым. ❓ Нужен именно вектор? Материализуйте результат:
// C++23
auto vec = result | std::ranges::to<std::vector>();

// C++20
std::vector<int> vec(result.begin(), result.end());
🐸 Продолжение следует... 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #константная_правильность

Сколько пользовательских преобразований компилятор может применить в одной неявной цепочке?
Anonymous voting

😎 Бенчмарк прямо в браузере, без сборки проекта quick-bench.com — онлайн-бенчмарк на базе Google Benchmark. Пишешь два вариа
😎 Бенчмарк прямо в браузере, без сборки проекта quick-bench.com — онлайн-бенчмарк на базе Google Benchmark. Пишешь два варианта кода, выбираешь стандарт (C++11–23) и компилятор (GCC или Clang) — и получаешь график сравнения. ❗Поддержка флагов оптимизации Можно переключать -O0, -O1, -O2, -O3 и видеть, как меняется разрыв между вариантами. Иногда «медленный» код с -O3 обходит «быстрый» без оптимизаций (Но это не точно😜). ❗ Шаринг результатов Каждый бенчмарк получает постоянную ссылку. Удобно в code review: вместо «мне кажется, так быстрее» — вот ссылка с числами. 📚 Библиотека готовых примеров На сайте есть коллекция бенчмарков от сообщества: std::string vs string_view, heap vs stack, разные контейнеры. Можно учиться на чужих измерениях. ✍️ Теперь ты сможешь поделиться своей ссылкой, чтобы доказать всем что твой код самый быстрый 🤠 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #линкер_рекомендует

😎 Топ-вакансий для C++ разработчиков за неделю Developer C++ (KSMG) — Удалёнка Senior Android Security / Reverse Engineer (HTTPS Traffic, Google Services) — от 380 000 и до 500 000 ₽ Удалёнка C++ Developer (Gates Team) — от 5 000 € Офис (Дубай, Амстердам) ✍️ Еще больше топовых вакансий — в нашем канале C++ jobs 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #буст

🗄️ Исходники Cfront и документы по истории C++ — теперь в открытом доступе Computer History Museum собрал архив первоисточни
🗄️ Исходники Cfront и документы по истории C++ — теперь в открытом доступе Computer History Museum собрал архив первоисточников по C++: от ранних технических отчётов Bell Labs до исходного кода транслятора Cfront всех релизов. ❗ Cfront Release E (1985) — первый публичный релиз, по словам Страуструпа, написан им лично почти целиком. ❗Хронология стандартизации: от первого заседания ANSI J16 (1989) до принятия templates, exceptions, RTTI, namespaces и STL. ❗Оригинальные документы по operator overloading, data abstraction, coroutine-style programming — те самые идеи, которые сегодня оформились в RAII, coroutines и move semantics. ❗Три HOPL-статьи Страуструпа охватывают эволюцию языка с 1979 по 2020 год — ни один учебник не даёт такой плотности контекста😎 ✍️ Насколько современный C++ с его concepts, modules и consteval вообще узнаваем в том, что писал Страуструп в 1979-м? 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #буст

Что произойдёт при компиляции?
Anonymous voting

🍿 C++ Ranges. Views и алгоритмы Продолжаем тему Ranges в C++. В библиотеке Ranges есть два главных инструмента работы с последовательностями: 1. std::ranges::* алгоритмы — переработанная версия классической библиотеки <algorithm>. Принимают не пару итераторов, а целый диапазон, поддерживают проекции и лучше взаимодействуют с современными типами. 2. std::views::* адаптеры — ленивые обёртки над диапазонами. Не копируют данные, а описывают как их обойти. Удобны для цепочек преобразований. 🐤 Старый стиль vs новый стиль
std::vector<int> v = {5, 3, 1, 4, 2};

// Старый стиль: передаём пару итераторов
std::sort(v.begin(), v.end());

// Новый стиль: передаём весь диапазон
std::ranges::sort(v);
❗️Разница кажется небольшой, но новый стиль: • Синтаксически короче • Поддерживают проекции — сортировку по произвольному полю объекта • Работают с любым range-совместимым типом, не только с контейнерами ✅ Пример 1. Cортировка
#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<std::string> names = {"Boris", "Anton", "Victor", "Anna"};

    std::ranges::sort(names);

    for (const auto& name : names) {
        std::cout << name << "\n";
    }
    // Anna, Anton, Boris, Victor
}
Пример 2. Проекции — сортировка по полю структуры Одна из главных фич ranges-алгоритмов. Не нужно писать лямбду вручную — достаточно указать, по какому полю сортировать:
#include <algorithm>
#include <vector>
#include <iostream>
#include <string>

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

int main() {
    std::vector<Person> people = {
        {"Boris", 30},
        {"Anna", 25},
        {"Victor", 35}
    };

    // Сортируем по возрасту, передав &Person::age как проекцию
    std::ranges::sort(people, {}, &Person::age);

    for (const auto& p : people) {
        std::cout << p.name << " " << p.age << "\n";
    }
    // Anna 25, Boris 30, Victor 35
}
Пример 3. Views — ленивые цепочки std::views не трогают исходный контейнер и не создают копий — они описывают трансформацию, которая применяется при обходе:
#include <ranges>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8};

    // Берём только чётные, умножаем на 10, берём первые 3
    auto result = v
        | std::views::filter([](int x) { return x % 2 == 0; })
        | std::views::transform([](int x) { return x * 10; })
        | std::views::take(3);

    for (int x : result) {
        std::cout << x << "\n";
    }
    // 20, 40, 60
}
❗️Исходный вектор v не изменился. Весь пайплайн вычисляется лениво — только когда мы итерируемся в цикле. 🐸 Продолжение следует... В следующий раз разбираем pipelines 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #константная_правильность

🌻 C++26 официально готов! На встрече международного комитета по стандартизации ISO C++ в Кройдоне поставлена финальная точка
🌻 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++ разработчика #буст

💼 30 сайтов для поиска работы в IT в 2026 году Рынок IT-вакансий давно вышел за пределы hh.ru и LinkedIn. Одни площадки зато
💼 30 сайтов для поиска работы в IT в 2026 году Рынок IT-вакансий давно вышел за пределы hh.ru и LinkedIn. Одни площадки заточены под стартапы и equity-офферы, другие продвигают прозрачные зарплаты без буллшита, третьи созданы специально для первой работы после универа. В этом гайде собраны 30 джоб-сайтов с описанием, кому и зачем они подходят. 👉 Продолжение... 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #буст

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

✌🏻 У нас две новости — хорошая и плохая! Хорошая: Ваших знаний, скорее всего, хватит, чтобы собрать рабочую демку AI-агента в Colab. 🫡 Плохая: Вы вряд ли выведете его в прод, не обанкротившись на токенах и не слив базу. 🤯 Для защиты от таких сценариев мы полностью пересобрали курс «Разработка AI-агентов». Теперь внутри плотная работа с экономикой ресурсов, дебаг через time-travel в LangGraph, извлечение данных из кривых сканов для RAG и комплаенс по 152-ФЗ.
Если всё ещё сомневаетесь, послушайте голосовое от спикера курса Влада Прошинского, где он объясняет, как правильно тестировать агентов перед релизом.
Программа курса, полный состав спикеров и другие подробности 👈🏻 ВАЖНО! До 5 апреля на курс действует скидка, но свободные места могут закончиться раньше.

😎 Топ-вакансий для C++ разработчиков за неделю C++ Developer (Gates Team) — от 5 000 € Офис (Дубай, Амстердам) Старший разработчик C++ — от 350 000 и до 500 000 ₽ Удалёнка Middle+/Senior C++ Developer — от 2 500 и до 3 500 $ Удалёнка ✍️ Еще больше топовых вакансий — в нашем канале C++ jobs 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #буст

🥳 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++ разработчика #константная_правильность

👩‍💻 #include хотят переименовать в #please Комитет ISO пришёл к выводу, что вежливое обращение к компилятору снижает количество ошибок компиляции на 12%.
#please <iostream>
#please <vector>
❗️ Компилятор тоже заслуживает уважения. Попались? С первым апреля! 😁 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #развлекалово