⚡️ Фича дня: условный оператор с инициализацией
Часто перед условным оператором нужно объявить временную переменную, что загромождает область видимости и увеличивает вероятность ошибок.
Инициализация переменных прямо в условии if/switch (C++17) позволяет ограничить область видимости только блоком условия.
🔴 До:
🟢 После:
Примеры использования:
- Поиск в контейнерах с проверкой результата
- Вызов функций с проверкой возвращаемого значения
- Инициализация мьютексов с последующей блокировкой
💡 Как думаете, улучшает ли это читаемость кода?
Библиотека C/C++ разработчика #буст
Часто перед условным оператором нужно объявить временную переменную, что загромождает область видимости и увеличивает вероятность ошибок.
Инициализация переменных прямо в условии if/switch (C++17) позволяет ограничить область видимости только блоком условия.
🔴 До:
auto it = map.find(key);
if (it != map.end()) {
// Используем it->second
}
🟢 После:
if (auto it = map.find(key); it != map.end()) {
// Используем it->second
}
Примеры использования:
- Поиск в контейнерах с проверкой результата
- Вызов функций с проверкой возвращаемого значения
- Инициализация мьютексов с последующей блокировкой
💡 Как думаете, улучшает ли это читаемость кода?
Библиотека C/C++ разработчика #буст
🔥 std::vector в Си?
💡 Автор статьи разработал свою реализацию аналога std::vector для языка Си после анализа существующих решений, которые не подходили по ряду причин.
❗ Ключевые моменты статьи:
• обращение к элементам напрямую без лишних структур
• инкапсуляция метаданных вектора от пользователя
• минимальное использование макросов, только для удобства API
Основной фокус — элегантное инженерное решение: выделение памяти под структуру и данные одним блоком, с возвратом указателя на данные, которые идут сразу после структуры.
Особенно актуально для C-разработчиков, которые хотят получить удобство контейнеров C++ без смены языка программирования.
💡 Автор статьи разработал свою реализацию аналога std::vector для языка Си после анализа существующих решений, которые не подходили по ряду причин.
❗ Ключевые моменты статьи:
• обращение к элементам напрямую без лишних структур
• инкапсуляция метаданных вектора от пользователя
• минимальное использование макросов, только для удобства API
Основной фокус — элегантное инженерное решение: выделение памяти под структуру и данные одним блоком, с возвратом указателя на данные, которые идут сразу после структуры.
Особенно актуально для C-разработчиков, которые хотят получить удобство контейнеров C++ без смены языка программирования.
🚀 CLion теперь бесплатен для некоммерческих проектов!
Компания JetBrains объявила, что их мощная IDE CLion (для C и C++) теперь доступна бесплатно для некоммерческого использования!
Это отличная новость для:
🔹 Студентов и начинающих разработчиков
🔹 Авторов open-source проектов
🔹 Энтузиастов, пишущих код в качестве хобби
Раньше для работы с CLion требовалась подписка, но теперь JetBrains решил снизить порог входа в C/C++ разработку. В 2024 году они уже сделали бесплатными RustRover, Rider и WebStorm, а теперь очередь дошла и до CLion.
Библиотека C/C++ разработчика
Компания JetBrains объявила, что их мощная IDE CLion (для C и C++) теперь доступна бесплатно для некоммерческого использования!
Это отличная новость для:
🔹 Студентов и начинающих разработчиков
🔹 Авторов open-source проектов
🔹 Энтузиастов, пишущих код в качестве хобби
Раньше для работы с CLion требовалась подписка, но теперь JetBrains решил снизить порог входа в C/C++ разработку. В 2024 году они уже сделали бесплатными RustRover, Rider и WebStorm, а теперь очередь дошла и до CLion.
Библиотека C/C++ разработчика
Что выведет код с использованием std::filesystem?
Anonymous Quiz
21%
a/b/c.txt
69%
c.txt
2%
a/b
9%
Ошибка компиляции
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
🔥 Бьярн Страуструп о будущем C++, рисках ИИ и сложности замены языка
Создатель языка C++ Бьярн Страуструп поделился своим видением «C++ 21-го века» на конференции Qt World Summit в Мюнхене.
По его словам, современный C++ — это не просто набор новых функций, а более целостный, эффективный и безопасный язык.
❗Страуструп рекомендует:
• Использовать более прямые конструкции вместо традиционных переменных цикла
• Применять обобщенное программирование с автоматическим выводом типов
• Никогда не использовать «сырые указатели» как ресурсные дескрипторы
• Заменить устаревшие #include на современные import
Страуструп выразил обеспокоенность влиянием ИИ на программирование: «ИИ склоняет людей к устаревшим подходам, а программисты теряют способность выявлять проблемы».
Он также скептически относится к попыткам создать языки-заменители C++: «Легко разработать что-то лучше C++ для узкой области, но одна из сильных сторон C++ — работа в самых разных доменах».
Библиотека C/C++ разработчика
Создатель языка C++ Бьярн Страуструп поделился своим видением «C++ 21-го века» на конференции Qt World Summit в Мюнхене.
По его словам, современный C++ — это не просто набор новых функций, а более целостный, эффективный и безопасный язык.
❗Страуструп рекомендует:
• Использовать более прямые конструкции вместо традиционных переменных цикла
• Применять обобщенное программирование с автоматическим выводом типов
• Никогда не использовать «сырые указатели» как ресурсные дескрипторы
• Заменить устаревшие #include на современные import
Страуструп выразил обеспокоенность влиянием ИИ на программирование: «ИИ склоняет людей к устаревшим подходам, а программисты теряют способность выявлять проблемы».
Он также скептически относится к попыткам создать языки-заменители C++: «Легко разработать что-то лучше C++ для узкой области, но одна из сильных сторон C++ — работа в самых разных доменах».
Библиотека C/C++ разработчика
❓ Что выведет код и какие могут быть проблемы
Пишите свои варианты в комментарии 👇
Библиотека C/C++ разработчика
Пишите свои варианты в комментарии 👇
Библиотека C/C++ разработчика
📌 24 мая, System Level Meetup от YADRO, Санкт-Петербург и онлайн
Встретимся, чтобы поговорить об C++ в системной разработке: обсудим стандарты, подходы и реальные задачи, которые решаются на этом языке.
Участвовать можно офлайн или онлайн — регистрируйтесь, чтобы забронировать место или получить ссылку на стрим на одной из популярных платформ.
Классные бонусы для офлайн-участников: демозона с «железом» YADRO для ЦОД и телеком-операторов, технические интерактивы и подарки от компании.
В программе:
— Константин Владимиров и Илья Андреев расскажут о девиртуализации в C++, её основных проблемах и о том, как компиляторы эти проблемы решают.
— Леонид Меркин расскажет, как благодаря программированию на C++ в российской аэрокосмической индустрии растёт надёжность mission-critical-IT-решений.
— Илья Шишков прочитает доклад «C++ внутри PostgreSQL: удобство против традиций» и поделится тем, как смог вплести C++ в строго C-шную кодовую базу и каких результатов добился.
Вторая секция митапа — о Linux Kernel. Там обсудим эволюцию ядра Linux, использование Rust для написания драйверов устройств и другие темы. Можно выбрать одно направление или послушать доклады из разных секций.
📍Санкт-Петербург, Loft Hall, Арсенальная набережная, 1 или онлайн-трансляция.
Участие бесплатное, но нужна регистрация.
До встречи!
Встретимся, чтобы поговорить об C++ в системной разработке: обсудим стандарты, подходы и реальные задачи, которые решаются на этом языке.
Участвовать можно офлайн или онлайн — регистрируйтесь, чтобы забронировать место или получить ссылку на стрим на одной из популярных платформ.
Классные бонусы для офлайн-участников: демозона с «железом» YADRO для ЦОД и телеком-операторов, технические интерактивы и подарки от компании.
В программе:
— Константин Владимиров и Илья Андреев расскажут о девиртуализации в C++, её основных проблемах и о том, как компиляторы эти проблемы решают.
— Леонид Меркин расскажет, как благодаря программированию на C++ в российской аэрокосмической индустрии растёт надёжность mission-critical-IT-решений.
— Илья Шишков прочитает доклад «C++ внутри PostgreSQL: удобство против традиций» и поделится тем, как смог вплести C++ в строго C-шную кодовую базу и каких результатов добился.
Вторая секция митапа — о Linux Kernel. Там обсудим эволюцию ядра Linux, использование Rust для написания драйверов устройств и другие темы. Можно выбрать одно направление или послушать доклады из разных секций.
📍Санкт-Петербург, Loft Hall, Арсенальная набережная, 1 или онлайн-трансляция.
Участие бесплатное, но нужна регистрация.
До встречи!
⌨️ Топ-вакансий для C++разработчиков за неделю
Embedded разработчик C/C++ — до 230 000 ₽ Гибрид (Екатеринбург)
Lead Algorithms and Models L2+ Layer Manager — от 300 000 ₽ Удалёнка (Москва, Санкт-Петербург, Нижний Новгород)
Реверс-инженер / разработчик C/C++ (Windows) — от 200 000 до 300 000 ₽ Офис (Москва)
Senior C++ Qt Developer — от 5 000 до 5 900 $ Удалёнка (Москва)
C++ Developer — 300 000 — 400 000 ₽ Удалёнка
➡️ Еще больше топовых вакансий — в нашем канале C++ jobs
Embedded разработчик C/C++ — до 230 000 ₽ Гибрид (Екатеринбург)
Lead Algorithms and Models L2+ Layer Manager — от 300 000 ₽ Удалёнка (Москва, Санкт-Петербург, Нижний Новгород)
Реверс-инженер / разработчик C/C++ (Windows) — от 200 000 до 300 000 ₽ Офис (Москва)
Senior C++ Qt Developer — от 5 000 до 5 900 $ Удалёнка (Москва)
C++ Developer — 300 000 — 400 000 ₽ Удалёнка
➡️ Еще больше топовых вакансий — в нашем канале C++ jobs
😎 Hint: Оптимизация std::vector
Знаете ли вы, что можно значительно ускорить работу с вектором, если заранее выделить память?
Метод reserve() позволяет избежать многократных перераспределений памяти:
Это может в разы увеличить работу с большими векторами.
Библиотека C/C++ разработчика #буст
Знаете ли вы, что можно значительно ускорить работу с вектором, если заранее выделить память?
Метод reserve() позволяет избежать многократных перераспределений памяти:
std::vector v;
v.reserve(1000); // выделяем память сразу
for(int i = 0; i < 1000; ++i) {
v.push_back(i); // не будет перевыделений памяти
}
Это может в разы увеличить работу с большими векторами.
Библиотека C/C++ разработчика #буст