fa
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

نمایش بیشتر
2025 سال در اعدادsnowflakes fon
card fon
19 530
مشترکین
-724 ساعت
-417 روز
-18530 روز
آرشیو پست ها
✏️ Промпт дня: Создание юнит-тестов для надёжного кода Юнит-тесты — это автоматизированные тесты, которые проверяют поведение отдельных частей кода в изоляции. Они помогают обнаруживать ошибки на ранней стадии и значительно упрощают поддержку кода в C++. ☀️ Решение с помощью AI
Please write unit tests for [имя файла и модуля] to ensure its proper functioning

[ВСТАВЬТЕ ВАШ КОД ЗДЕСЬ]
🧋 Пример трансформации До:
class Calculator {
public:
    int add(int a, int b) { return a + b; }
    int divide(int a, int b) { 
        if (b == 0) throw std::invalid_argument("Division by zero");
        return a / b; 
    }
};
После:
#include <gtest/gtest.h>

TEST(CalculatorTest, AddPositiveNumbers) {
    Calculator calc;
    EXPECT_EQ(calc.add(2, 3), 5);
}

TEST(CalculatorTest, DivideByZero) {
    Calculator calc;
    EXPECT_THROW(calc.divide(10, 0), std::invalid_argument);
}

TEST(CalculatorTest, DivideNormalCase) {
    Calculator calc;
    EXPECT_EQ(calc.divide(10, 2), 5);
}
✏️ Как часто вы пишете юнит-тесты для своего C++ кода? 🐸Библиотека C/C++ разработчика #буст
نمایش همه...
❤‍🔥 7 1👍 1
Photo unavailableShow in Telegram
نمایش همه...
🥱 19😁 13🔥 6
Photo unavailableShow in Telegram
❗ Первый вебинар нашего курса по AI-агентам уже прошёл! Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом. Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку: — «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся» — «без лишнего, по делу, в лайве — кайф» — «огонь, ожидания 100% оправданы лично у меня» Если хотели вписаться, но сомневались — ещё не поздно. Вебинары идут вживую, записи сохраняются, чат работает, материалы открыты. ⏳ Ещё можно догнать и пройти всё вместе с потоком. 👉 Залетай на курс
نمایش همه...
Photo unavailableShow in Telegram
🚀 std::unreachable в C++23 Компилятор не всегда понимает, что некоторые участки кода недостижимы. std::unreachable() помогает ему генерировать более оптимальный код. 📋 Пошаговое решение: 1️⃣ Подключите заголовок
#include <utility>  // C++23
2️⃣ Используйте в switch без default
enum class Color { RED, GREEN, BLUE };

std::string colorToString(Color c) {
    switch(c) {
        case Color::RED:   return "red";
        case Color::GREEN: return "green"; 
        case Color::BLUE:  return "blue";
    }
    std::unreachable(); // Говорим компилятору: сюда не попадём!
}
3️⃣ Применяйте в условных блоках
int divide(int a, int b) {
    if (b != 0) {
        return a / b;
    }
    
    // Логически сюда не должны попасть
    handleError(); // Наша обработка
    std::unreachable(); // Оптимизация для компилятора
}
⚠️ Частые ошибки: ❌ Неправильно: Использовать когда код действительно достижим ❌ Неправильно: Забывать про обработку ошибок перед unreachable() ✅ Правильно: Использовать только когда логически уверены в недостижимости 🎯 Практический совет: std::unreachable() - это контракт с компилятором. Если код всё-таки достигнет этой точки, поведение неопределено. Используйте только когда на 100% уверены. 🎯 Альтернатива: В старых стандартах используйте __builtin_unreachable() (GCC/Clang) или __assume(false) (MSVC). 🐸Библиотека C/C++ разработчика #буст
نمایش همه...
🔥 8 4
Photo unavailableShow in Telegram
🌀 Тезисы о std::set и std::multiset в C++ 💡 Максим Бабенко разбирает ключевые различия между std::set и std::multiset и показывает практические примеры их использования. ❗ Ключевые моменты статьи:std::set хранит только уникальные элементы, std::multiset допускает дубликаты • операции erase() ведут себя по-разному в двух контейнерах • методы поиска и работы с диапазонами имеют особенности Основной фокус — практические различия в поведении методов insert(), erase(), find() и equal_range() для каждого типа контейнера. Особенно полезно для разработчиков, которые активно используют STL и хотят избежать неожиданного поведения при работе с ассоциативными контейнерами. Помните: в std::multiset метод erase(value) удаляет ВСЕ элементы с данным значением, а не только один. Для удаления единственного элемента используйте erase(iterator). Библиотека C/C++ разработчика
نمایش همه...
👍 2 1
Photo unavailableShow in Telegram
🍪 Doxygen ❗️Проблема: Поддержка актуальной документации для C++ проектов требует постоянного обновления отдельных файлов. Разработчики забывают обновлять документацию после изменения кода, что приводит к устаревшей и неточной информации. ✅ Решение: Doxygen автоматически генерирует документацию из специальных комментариев в коде. Инструмент создает HTML, PDF и другие форматы документации с диаграммами классов и зависимостей. ✏️ Пример кода:
/**
 * @brief Класс для работы с геометрическими фигурами
 * @author Имя разработчика
 * @date 2024-01-15
 */
class Shape {
protected:
    double width;  ///< Ширина фигуры
    double height; ///< Высота фигуры
    
public:
    /**
     * @brief Конструктор с параметрами
     * @param w Ширина фигуры (должна быть > 0)
     * @param h Высота фигуры (должна быть > 0)
     * @throw std::invalid_argument при некорректных параметрах
     */
    Shape(double w, double h) : width(w), height(h) {
        if (w <= 0 || h <= 0) {
            throw std::invalid_argument("Размеры должны быть положительными");
        }
    }
    
    /**
     * @brief Вычисляет площадь фигуры
     * @return Площадь в квадратных единицах
     * @note Виртуальный метод, должен быть переопределен
     */
    virtual double calculateArea() const = 0;
    
    /// Деструктор по умолчанию
    virtual ~Shape() = default;
};
# Генерация документации
doxygen -g  # Создание конфигурационного файла
doxygen Doxyfile  # Генерация документации
Преимущества: — Автоматическая генерация документации из кода — Поддержка множества выходных форматов — Создание диаграмм классов и зависимостей — Синхронизация документации с кодом 🐥 А как вы пишите документацию? Пишите в комментариях. 🐸Библиотека C/C++ разработчика #буст
نمایش همه...
🔥 5👍 3 2🥰 1
🏖 Подборка вакансий для C++-разработчиков за неделю C/C++ Developer — от 350 000 и до 500 000 ₽ Гибрид (Москва) Разработчик на C++ — от 250 000 и до 350 000 ₽ Офис (Москва) С/С++ Linux разработчик — до 8000 $ Удалёнка Разработчик C++ — от 190 000 и до 250 000 ₽ Офис (Москва) Программист микроконтроллеров C++ STM — от 200 000 ₽ Гибрид (Москва) C и C++ Developer — от 240 000 до 270 000 ₽ Гибрид (Москва) C++/Qt Developer (Рефакторинг) — от 260 000 ₽ Гибрид (Москва, Санкт-Петербург) Библиотека C/C++ разработчика
نمایش همه...
1👍 1
Repost from TgId: 1940255915
Что вернет функция main()?Anonymous voting
  • 1
  • Ошибка компиляции
  • Блокировка программы
  • 0
  • Неопределенное поведение
0 votes
Repost from TgId: 1940255915
Photo unavailableShow in Telegram
Photo unavailableShow in Telegram
📰 Свеженькое из мира C++ Недельный дайджест новостей о разных аспектах программирования и интересных проектах в мире C++. 🥳 Интересное:C++26 получил Reflection — обзор новой фитчи • Почему std::vector из bool'ов — это не то, что вы думаете — обзор std::vector из bool'ов • C++26 — что нового и почему стандартизация это так сложно — обзор фишек нового стандарта • Как алгоритмическое мышление повышает производительность приложений — статья о улучшении производительности 😎 Полезное:Использование Boost.Program_options— пример использования библиотеки • Расширение функциональности с помошью AI — пример использования искусственного интеллекта • Форматирование кода для единообразного стиля — чек-лист по форматированию 🖨Интересные проекты:Ladybird — независимый веб-браузер • PCSX2 — бесплатный эмулятор PlayStation 2 (PS2) с открытым исходным кодом • Serial Studio — кроссплатформенная телеметрическая панель управления Библиотека C/C++ разработчика #свежак
نمایش همه...
4🔥 1
Photo unavailableShow in Telegram
👾 Как эффективнее изучать C++ в 2025? Книжники (я такой): «Effective C++, More Effective C++, Meyers — это классика! Книга дает систематизированные знания.» Видео-фанаты: «YouTube, Coursera, Udemy — современно, наглядно, можно на 2x скорости!» Практики: «Лучший способ изучить C++ — читать исходники больших проектов и писать код!» Реальный опыт: Прочитал 15 книг по C++, но реальное понимание пришло только после года работы с legacy кодом на 500k строк 😅 Провокационный факт: Встречал разработчиков, которые знают наизусть «Effective C++», но не могут написать простой RAII wrapper. 😼 Как изучаешь новое? ❤️ Книги (классическая база) 🔥 Видео (современный подход) 👏 Практика (сразу код) 🌚 Смешанный подход Библиотека C/C++ разработчика
نمایش همه...
🌚 32 14🔥 5👏 3🤔 1
Photo unavailableShow in Telegram
🔥 Сегодня стартует курс по AI-агентам! Онбординг уже сегодня, но ещё можно вписаться — ПОСЛЕДНИЙ ШАНС это сделать. Мы больше года собирали мультиагентные системы: экспериментировали, переделывали и в итоге — оформили всё в 5 плотных вебинаров. 😤 «А можно ли вообще научиться чему-то за 5 вебинаров?!» Если вы хотите просто послушать — нет Если хотите разбираться и делать — да ➡️ На курсе: — мы не читаем слайдики, а работаем в коде в реальном времени — можно задавать вопросы прямо на вебинаре — после каждого вебинара есть домашка и поддержка в чате И главное — вы получаете системное понимание, а не набор хаотичных туториалов. ⚡️Если вы думаете, что успеете потом — не успеете. Старт сегодня: — а те, кто вписался сейчас, будут вас опережатьв проектах, на грейде и в зарплате Знакомьтесь, эксперт нашего курса: Никита Зелинский — Chief Data Scientist МТС, Head of ML Platforms, руководитель центра компетенций по Data Science. ❗Стартуем сегодня — забронируй свое место
نمایش همه...
1🥱 1
Photo unavailableShow in Telegram
🐸 #буст
نمایش همه...
😁 30 2
Photo unavailableShow in Telegram
🧠 Как алгоритмическое мышление повышает производительность приложений За последние годы я не раз сталкивался с проектами, где смена всего одного неудачного алгоритма в корне меняла картину. Внезапно запросы начинали выполняться за миллисекунды, а пользователи переставали жаловаться на «тормоза». Обычно такие решения находят программисты, которые участвовали в соревнованиях по спортивному программированию. И я хочу рассказать, почему их мышление помогает в реальной работе. 👉 Продолжение в статье Библиотека C/C++ разработчика
نمایش همه...
🔥 3 1
Photo unavailableShow in Telegram
👾 C++26 — что нового и почему стандартизация это так сложно 💡 Антон Полухин и Павел Новиков разбирают, что нового в C++26 и почему процесс стандартизации настолько сложен. ❗ Ключевые моменты обсуждения: • контракты и рефлексия наконец добавлены в C++26 • стандартизация учитывает интересы всех участников экосистемы • модули в C++20 — пример удачного компромисса после 5 лет обсуждений Основной фокус — понимание того, что комитет по стандартизации должен учитывать интересы разработчиков мобильных устройств, бэкенд-приложений, экзотических платформ и крупных компаний одновременно. Особенно интересно для тех, кто хочет понять механизмы принятия решений в мире C++ и почему некоторые «очевидные» фичи добавляются годами. Вы узнаете, что медленность стандартизации — это не бюрократия, а необходимость найти решение, которое работает для всех участников экосистемы, от разработчиков встроенных систем до авторов высокоуровневых библиотек. 👉 Видео Библиотека C/C++ разработчика #буст
نمایش همه...
3👍 2
Photo unavailableShow in Telegram
⚠️ Частая ошибка: почему std::vector<bool> — это не то, что вы думаете Это один из самых неожиданных моментов в STL. std::vector<bool> ведет себя не как обычный vector!
// Обычный vector - все работает как ожидается
std::vector<int> vec_int = {1, 2, 3};
int& ref = vec_int[0];    // Настоящая ссылка
int* ptr = &vec_int[0];   // Настоящий указатель

// vector<bool> - сюрприз!
std::vector<bool> vec_bool = {true, false, true};
// auto& ref = vec_bool[0];  // Ошибка компиляции!
// bool* ptr = &vec_bool[0]; // Тоже ошибка!

// Это работает, но ref - не настоящая ссылка
auto ref = vec_bool[0];   // Тип: std::vector<bool>::reference
ref = false;              // Работает, но через прокси-объект

// Если нужен настоящий vector<bool>
std::deque<bool> real_bool_container = {true, false, true};
bool& real_ref = real_bool_container[0];  // Настоящая ссылка!
Причина: std::vector<bool> оптимизирован для экономии памяти (1 бит на элемент), поэтому не может дать настоящие ссылки. 🔎 Сталкивались ли вы с этой особенностью? Как решали проблему? Библиотека C/C++ разработчика #буст
نمایش همه...
8🌚 5
Photo unavailableShow in Telegram
🧠 «Поиграйся с LLM, почитай про агентов — и сам поймёшь, как это работает» Это один из самых бесполезных советов, который мы слышали в адрес тех, кто хочет разобраться в AI-агентах. Поиграйся — это как? Потыкать пару промптов в ChatGPT и решить, что теперь ты можешь строить мультиагентные системы? 🤡 Ну-ну. AI-агенты — это не «очередная обёртка над GPT». Это архитектура. Состояния, инструменты, цепочки вызовов, память, оценка качества и адекватность поведения. ➡️ Чтобы разобраться, нужно: — понимать, как устроен LLM под капотом — уметь подключать внешние данные (RAG, retrievers, rerankers) — уметь масштабировать и дебажить поведение агентов — разбираться в фреймворках вроде AutoGen, CrewAI, LangChain — знать, как всё это тащится в прод Если вы реально хотите не «поиграться», а научиться собирать рабочие агентные системы — у нас стартует курс по разработке ИИ-агентов 5го июля P.S: не упусти свой шанс, промокод: LASTCALL на 10.000₽
نمایش همه...
😁 1
Photo unavailableShow in Telegram
Чек-лист: Автоматическое форматирование кода для единообразного стиля в команде 🎯 Настройка и конфигурация ✓ Создайте .clang-format файл в корне проекта ✓ Выберите базовый стиль ✓ Настройте отступы, скобки и переносы строк ✓ Добавьте специфичные правила для вашего проекта 🎯 Интеграция с инструментами ✓ Настройте автоформатирование в IDE ✓ Используйте pre-commit hooks для Git ✓ Интегрируйте с CI для проверки стиля ✓ Добавьте команды форматирования в CMake 🎯 Командная работа ✓ Документируйте стиль кода в README ✓ Проводите code review с проверкой стиля ✓ Используйте .clang-format-ignore для исключений ✓ Настройте автоматическое форматирование 🎯 Продвинутые возможности ✓ Используйте clang-format-diff для частичного форматирования ✓ Настройте языкоспецифичные правила ✓ Применяйте макросы для кастомизации ✓ Интегрируйте с другими linter'ами Как измерить результат: Подсчитайте количество комментариев по стилю кода в code review. Библиотека C/C++ разработчика #буст
نمایش همه...
🔥 4🥰 1🤩 1
Photo unavailableShow in Telegram
نمایش همه...
😁 37👏 2👾 1
Photo unavailableShow in Telegram
🔥 Последняя неделя перед стартом курса по AI-агентам Старт курса уже 5го числа! Если вы планировали вписаться — сейчас ПОСЛЕДНИЙ шанс забронировать место На курсе:разложим LLM по косточкам: токенизация, SFT, PEFT, инференс — соберём RAG и научимся оценивать его адекватно — построим настоящую мультиагентную систему — архитектуру, которая умеет расти — разберём CoPilot, сломаем через prompt injection (спасибо Максу) — и наконец, посмотрим, как это работает в MCP и реальных кейсах 📍 Это 5 живых вебинаров + раздатка + домашки + чат с преподавателями И главное — возможность реально разобраться, как проектировать системы на LLM, а не просто «поиграться с API» 👉 Курс здесь
نمایش همه...