ru
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 533
Подписчики
-724 часа
-417 дней
-18530 день
Архив постов
Фото недоступноПоказать в Telegram
🏠 How to: Как правильно реализовать оператор присваивания Перегрузка operator= - одна из самых коварных тем в C++. Часто приводит к багам. 🍴Правила безопасного operator=: 1️⃣ Проверяем самоприсваивание 2️⃣ Создаём временную копию 3️⃣ Используем swap idiom
class MyString {
private:
    char* data;
    size_t length;
    
public:
    // Правильный operator=
    MyString& operator=(const MyString& other) {
        if (this == &other) return *this; // самоприсваивание
        
        // Создаём временную копию
        char* temp = new char[other.length + 1];
        strcpy(temp, other.data);
        
        // Освобождаем старые данные
        delete[] data;
        
        // Присваиваем новые
        data = temp;
        length = other.length;
        
        return *this;
    }
    
    // Лучше через copy-and-swap
    MyString& operator=(MyString other) { // копия по значению
        swap(*this, other);
        return *this;
    }
};
Опасность: Без проверки самоприсваивания можем удалить данные, которые копируем. ✅ Золотое правило: Copy-and-swap никогда не подведёт. Библиотека C/C++ разработчика #буст
Показать все...
2🥰 1
00:58
Видео недоступноПоказать в Telegram
🚀 YADRO приглашает C++ разработчиков в команду OpenBMC и встроенных систем! Если вы хотите создавать сложное программное обеспечение для серверов и систем хранения данных, работать с передовыми технологиями Linux и участвовать в проектах open source, то эта возможность для вас. 📌 Кого мы ищем: • Ведущего разработчика C++ (Linux/OpenBMC) • Ведущего разработчика интерфейсов встроенных систем • TeamLead разработки OpenBMC 🧰 Технологический стек и задачи: • C++ (стандарты 17, 20, 23), STL, Boost • Linux-среда, systemd, D-Bus, Yocto, bash, Python • Работа с ядром прошивки OpenBMC, взаимодействие с UEFI/BIOS • Разработка и поддержка сложных интерфейсов встроенных систем 💼 Условия работы: • Гибкий формат: удалённо или в офисах в Москве, Санкт-Петербурге, Екатеринбурге, Нижнем Новгороде и Минске • Работа с масштабными проектами в уникальной команде инженеров • Возможность горизонтального и вертикального карьерного роста 💙 Узнайте больше и откликайтесь на вакансии прямо на сайте!
Показать все...
BIOS_BMC_INTERVIEW_SHORT_3.mp476.90 MB
🥱 9👍 6 1
Фото недоступноПоказать в Telegram
Последний шанс залутать курсы Proglib Academy с выгодой 40% и пожизненным доступом. До 1 августа действует скидка на курсы по математике для Data Science, алгоритмам и структурам данных, обновлённому Python, frontend-разработке с нуля, основам IT для непрограммистов, базовым моделям ML, а также архитектурам и шаблонам проектирования. Выбираем и забираем 👈 P.S. Акция не распространяется на курсы «AI-агенты для DS-специалистов» и «ML для старта в Data Science».
Показать все...
🥱 2 1😁 1
Фото недоступноПоказать в Telegram
Вот оно, безопасное программирование на С++ во всей красе 🐸 Библиотека программиста
Показать все...
😁 29 1👍 1👏 1🥱 1
🏖️ Подборка вакансий для C++-разработчиков за неделю Software Engineer (Humanoid Robots) — 190 000 ₽ Удалёнка Senior Linux Distro Master — от 5 000 и до 5 500 $ Удалёнка C++ Разработчик — от 180 000 и до 250 000 ₽ Удалёнка C++ Developer Middle — 200 000₽ Удалёнка Разработчик C/C++ (SDN dataplane, DPDK/DOCA API) — от 250 000 и до 400 000 ₽ Удалёнка Разработчик C++ — от 250 000 и до 400 000 ₽ Удалёнка Библиотека C/C++ разработчика
Показать все...
🙏 3👍 2
Repost from TgId: 1940255915
Что гарантированно выведет программа в C++17?Anonymous voting
  • 1234
  • 13444
  • 14
  • 1344
  • Зависит от оптимизаций компилятора
0 votes
Repost from TgId: 1940255915
Фото недоступноПоказать в Telegram
Repost from TgId: 1940255915
Что выведет программа?Anonymous voting
  • foobar
  • barfoo
  • Неопределенное поведение
  • foo
  • Нескомпилируется
0 votes
Repost from TgId: 1940255915
Фото недоступноПоказать в Telegram
Repost from TgId: 1940255915
Что выведет программа?Anonymous voting
  • foobar
  • barfoo
  • Неопределенное поведение
  • foo
  • Нескомпилируется
0 votes
Repost from TgId: 1940255915
Фото недоступноПоказать в Telegram
Фото недоступноПоказать в Telegram
📰 Свеженькое из мира C++ Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++. 👾 Интересное: C++26 улучшает форматирование чисел — статья о предстоящем изменении в std::format Эволюция работы с типами в C++: от C++98 до C++23 — историческая справка по работе с типами 😎 Полезное:std::chrono — библеотека для работы cо временем • Обработка ошибок с помощью AI — промпт, который поможет улучшить обработку ошибок 🖨️Интересные проекты:conjure_enum — библиотека для удобной работы и с перечислениями • Библиотека C/C++ разработчика
Показать все...
Какое изначальное название носил язык C++?Anonymous voting
  • Enhanced C
  • Object C
  • C with Classes
  • Advanced C
0 votes
Фото недоступноПоказать в Telegram
🤔 «Начни сразу с нейросетей — зачем тебе логрегрессия?» Это один из худших советов для начинающего ML-разработчика. Зрелость — это понимать, где простого достаточно, а не тянуть трансформеры на любую задачу из-за хайпа. Классика ML — это не допотопная теория, а база (bias/variance, деревья, метрики), без которой не понять Deep Learning. ⚡️ Хотите освоить этот фундамент на реальных задачах? Приходите на наш курс по классическому ML. Только хардкор, только продовые задачи! 📆 Старт — 12 августа. Для первых 10 участников бонус — специальный лонгрид по теме курса, чтобы вы могли начать разбираться уже сейчас. 🎁 Последний день промокода Earlybird на скидку 10.000₽. 👉 Не упустите шанс!
Показать все...
Фото недоступноПоказать в Telegram
Показать все...
😁 6😢 1
Фото недоступноПоказать в Telegram
🐕‍🦺 Пет-проекты в резюме: как превратить фриланс и side-проекты в карьерный козырь Наверняка каждому джуну была знакома эта ситуация: сидишь ночами, пилишь пет-проект, потом еще один... а когда приходит время собирать резюме, понимаешь — показать нечего. Вернее, проекты-то есть, но непонятно, как их оформить и включить в резюме. Поэтому сегодня объясним, как оформить свой неформальный опыт в резюме и продать себя в качестве специалиста. 👉 Статья
Показать все...
1 1
00:06
Видео недоступноПоказать в Telegram
Плюсовики, до конференции Яндекса C++ Zero Cost Conf осталось 9 дней! Мероприятие о прикладном C++ пройдет в Москве, СПб и Белграде. Вас ждут доклады о внедрении C++20 модулей, текущем статусе и перспективах развития hardening и десятки других выступлений от практикующих C++ экспертов. Если собираетесь посетить конференцию в Москве, то вас также ждет воркшоп по Perforator, кейс-лаб по надежности микросервисов и код-гольф, где нужно решать задачи на C++, потратив на код как можно меньше символов. Участие бесплатное, но необходимо зарегистрироваться на сайте до 28 июля!
Показать все...
1212.MP42.15 MB
🔥 6 3🤔 3👍 2
Фото недоступноПоказать в Telegram
✏️ conjure_enum: легковесное перечисление C++20 🔹 Зачем? Работа с перечислениями (enum) в C++ часто требует дополнительного кода: преобразование в строку, проверка значений, итерация по всем вариантам. Библиотека conjure_enum автоматизирует эту рутину! 🔹 Что умеет? ✅ Генерация to_string() для enum ✅ Проверка валидности значений (is_valid) ✅ Итерация по всем элементам enum ✅ Поддержка enum и enum class ✅ Минимальный оверхед (всё вычисляется на этапе компиляции) 🔹 Пример использования:
#include "conjure_enum.h"

CONJURE_DEFINE_ENUM(Color, Red, Green, Blue)

int main() {
    Color c = Color::Green;
    std::cout << conjure_enum::to_string(c); // "Green"
    std::cout << conjure_enum::is_valid(42); // false
    for (Color value : conjure_enum::values<Color>()) { ... }
}
🔹 Плюсы: ✔️ Заголовочный-only (просто подключи conjure_enum.h) ✔️ Не требует C++20 (работает даже на C++11) ✔️ Лёгкая интеграция в существующий код 💡 Кому пригодится? — Тем, кто устал писать switch-case для enum-ов — Если нужна удобная отладка (вывод значений в лог) — Для валидации конфигов/сетевых данных 🔗 Ссылка Библиотека C/C++ разработчика #буст
Показать все...
🔥 9 1
Фото недоступноПоказать в Telegram
😈 Modules в C++20 - будущее или очередной провал?
Modules обещали революцию, а получили головную боль!
5 лет назад: "Modules решат все проблемы! Быстрая компиляция! Настоящая инкапсуляция!" 2025 год: Поддержка модулей все еще экспериментальная, build системы путаются, а простой hello world на модулях собирается в 3 раза дольше классического 😅 🐊 Реальность модулей: - CMake = beta поддержка - Legacy код = не портируется - Compile times = пока что хуже 😡 Парадокс: Хотели ускорить компиляцию, получили новые проблемы с build системами. Но справедливости ради - концепция правильная. Проблема в том, что экосистема не готова. Может через 5 лет будет по-другому? 💡Сравнение:
// Классика: работает везде
#include <iostream>
#include "my_header.h"

// Modules: работает... иногда... если повезет
import std.io;  
import my.module;
Вопрос: Стоит ли уже сейчас изучать modules или подождать еще пару лет? 🔥 Уже использую в пет проектах ⚡️ Изучаю, но не применяю 👾 Жду стабилизации ❤️ Пока что #include рулит Библиотека C/C++ разработчика #междусабойчик
Показать все...
28👾 18 6🔥 3
🍪 Как эволюционировала работа с типами в C++: от C++98 до C++23 🌳 Помните времена, когда приходилось писать std::vector<std::vector<int> > с пробелом? Давайте посмотрим, как изменилась работа с типами за 25 лет! ✏️ Пошаговая эволюция: 1️⃣ C++98 - Боль и страдания
//Verbosity nightmare
std::vector<std::pair<std::string, int> > vec; // пробел обязателен!
for (std::vector<std::pair<std::string, int> >::iterator it = vec.begin(); 
     it != vec.end(); ++it) {
    // работаем с *it
}
2️⃣ C++11 - Первые облегчения
// auto и range-based for
std::vector<std::pair<std::string, int>> vec; // >> теперь OK!
for (auto& item : vec) {
    // намного чище!
}
3️⃣ C++17 - Магия template argument deduction
// Не нужно указывать типы
std::vector vec{std::pair{"hello", 42}, {"world", 24}}; // CTAD!
std::optional opt = some_function(); // тип выводится автоматически

// Structured bindings
for (auto [name, value] : vec) {
    std::cout << name << ": " << value << "\n";
}
4️⃣ C++20 - Concepts и constraints
#include <concepts>

template<std::integral T>  // Концепты!
auto process(T value) {
    return value * 2;
}

// Abbreviated function templates
auto add(std::integral auto a, std::integral auto b) {
    return a + b;
}
5️⃣ C++23 - Еще больше удобства
// if consteval для compile-time проверок
constexpr auto get_value() {
    if consteval {
        return 42; // compile-time версия
    } else {
        return expensive_runtime_calc(); // runtime версия  
    }
}

// Multidimensional subscript operator
matrix[1, 2, 3] = value; // вместо matrix[1][2][3]
💔 Частые ошибки: ❌ Злоупотребление auto: auto x = 5u; может быть неочевидным ✅ Явные типы для API: std::uint32_t count = get_count(); ❌ Игнорирование concepts: старые template error messages ✅ Используйте standard concepts: std::integral, std::floating_point Библиотека C/C++ разработчика #буст
Показать все...
🔥 10 2