Библиотека C/C++ разработчика | cpp, boost, qt
Ir al canal en Telegram
Все самое полезное для плюсовика и сишника в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/d6cd2932 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Mostrar más2025 año en números

19 533
Suscriptores
-724 horas
-417 días
-18530 días
Archivo de publicaciones
Photo unavailableShow in 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
Video unavailableShow in 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
Photo unavailableShow in Telegram
Последний шанс залутать курсы Proglib Academy с выгодой 40% и пожизненным доступом.
До 1 августа действует скидка на курсы по математике для Data Science, алгоритмам и структурам данных, обновлённому Python, frontend-разработке с нуля, основам IT для непрограммистов, базовым моделям ML, а также архитектурам и шаблонам проектирования.
Выбираем и забираем 👈
P.S. Акция не распространяется на курсы «AI-агенты для DS-специалистов» и «ML для старта в Data Science».
🥱 2❤ 1😁 1
Photo unavailableShow in 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
- Зависит от оптимизаций компилятора
Repost from TgId: 1940255915
Photo unavailableShow in Telegram
Repost from TgId: 1940255915
Что выведет программа?Anonymous voting
- foobar
- barfoo
- Неопределенное поведение
- foo
- Нескомпилируется
Repost from TgId: 1940255915
Photo unavailableShow in Telegram
Repost from TgId: 1940255915
Что выведет программа?Anonymous voting
- foobar
- barfoo
- Неопределенное поведение
- foo
- Нескомпилируется
Repost from TgId: 1940255915
Photo unavailableShow in Telegram
Photo unavailableShow in 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
Photo unavailableShow in Telegram
🤔 «Начни сразу с нейросетей — зачем тебе логрегрессия?»
Это один из худших советов для начинающего ML-разработчика. Зрелость — это понимать, где простого достаточно, а не тянуть трансформеры на любую задачу из-за хайпа.
Классика ML — это не допотопная теория, а база (bias/variance, деревья, метрики), без которой не понять Deep Learning.
⚡️ Хотите освоить этот фундамент на реальных задачах? Приходите на наш курс по классическому ML. Только хардкор, только продовые задачи!
📆 Старт — 12 августа.
Для первых 10 участников бонус — специальный лонгрид по теме курса, чтобы вы могли начать разбираться уже сейчас.
🎁 Последний день промокода Earlybird на скидку 10.000₽.
👉 Не упустите шанс!
Photo unavailableShow in Telegram
🐕🦺 Пет-проекты в резюме: как превратить фриланс и side-проекты в карьерный козырь
Наверняка каждому джуну была знакома эта ситуация: сидишь ночами, пилишь пет-проект, потом еще один... а когда приходит время собирать резюме, понимаешь — показать нечего. Вернее, проекты-то есть, но непонятно, как их оформить и включить в резюме.
Поэтому сегодня объясним, как оформить свой неформальный опыт в резюме и продать себя в качестве специалиста.
👉 Статья
⚡ 1❤ 1
00:06
Video unavailableShow in Telegram
Плюсовики, до конференции Яндекса C++ Zero Cost Conf осталось 9 дней!
Мероприятие о прикладном C++ пройдет в Москве, СПб и Белграде. Вас ждут доклады о внедрении C++20 модулей, текущем статусе и перспективах развития hardening и десятки других выступлений от практикующих C++ экспертов.
Если собираетесь посетить конференцию в Москве, то вас также ждет воркшоп по Perforator, кейс-лаб по надежности микросервисов и код-гольф, где нужно решать задачи на C++, потратив на код как можно меньше символов.
Участие бесплатное, но необходимо зарегистрироваться на сайте до 28 июля!
1212.MP42.15 MB
🔥 6❤ 3🤔 3👍 2
Photo unavailableShow in 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
Photo unavailableShow in 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
