fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

Библиотека C/C++ разработчика

Библиотека C/C++ разработчика

رفتن به کانال در Telegram

Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter

نمایش بیشتر
7 195
مشترکین
+624 ساعت
-27 روز
-2330 روز
آرشیو پست ها
CMake: Настройка проекта, подключение библиотек и мучения с Vulkan
Oh, and the documentation: It's extensive but never tells me what I need to know.
Эта цитата взята из обсуждения CMake на Reddit, и она очень точно описывает большую часть моих проблем с CMake: когда я хочу что-то сделать, документация не помогает с этим вообще, - приходится искать решения в чужих проектах и статьях. В этой статье будут разобраны проблемы, с которыми я столкнулся в процессе изучения Vulkan. Однако материал будет полезен и тем, кто настраивает любой другой проект. https://habr.com/ru/articles/873798/ #cpp #programming 👉 @cpp_lib

🔥 Оптимизация кода на C++: Ранний возврат вместо вложенных условий Привет, друзья! Сегодня хочу поговорить об одной важной технике, которая делает код чище и читабельнее — ранний возврат (early return). Часто встречаю код, который уходит в глубину вложенных if, превращаясь в настоящий лабиринт. Давайте разберем, как этого избежать. ❌ Плохой пример: Вложенные условия

void process(int value) {
    if (value > 0) {
        if (value % 2 == 0) {
            if (value < 100) {
                std::cout << "Обрабатываем " << value << std::endl;
            } else {
                std::cout << "Слишком большое число" << std::endl;
            }
        } else {
            std::cout << "Нечетное число" << std::endl;
        }
    } else {
        std::cout << "Отрицательное число" << std::endl;
    }
}
Здесь код уходит вглубь из-за множества вложенных if, что делает его сложным для чтения. ✅ Хороший пример: Ранний возврат

void process(int value) {
    if (value <= 0) {
        std::cout << "Отрицательное число" << std::endl;
        return;
    }
    if (value % 2 != 0) {
        std::cout << "Нечетное число" << std::endl;
        return;
    }
    if (value >= 100) {
        std::cout << "Слишком большое число" << std::endl;
        return;
    }

    std::cout << "Обрабатываем " << value << std::endl;
}
Теперь код сразу проверяет граничные условия и делает ранний возврат (return), если условия не выполнены. В итоге у нас получился плоский код, который проще читать и сопровождать. 🎯 Вывод: - Избегайте вложенных if, если можно этого не делать. - Используйте ранний возврат, чтобы код был линейным и понятным. - Чем меньше уровней вложенности — тем легче отладка и сопровождение. #cpp #programming 👉 @cpp_lib

Лексический анализ — один из важнейших этапов обработки текста, без которого не обходятся компиляторы, интерпретаторы и даже
Лексический анализ — один из важнейших этапов обработки текста, без которого не обходятся компиляторы, интерпретаторы и даже системы NLP. 💻 На открытом уроке рассмотрим: -Основные алгоритмы и технологии создания приложений для лексического анализа. -Области применения лексического анализа и особенности реализации. -Поиск и определение ошибок в тексте. Создадим простое приложение и разберем алгоритмы, которые помогают анализировать код. 📌 Встречаемся 24 марта в 20:00 мск. Регистрируйтесь и получите гарантированную скидку на курсе «Программист С»: https://vk.cc/cJBPrt Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Не покупайте грузовик для похода за хлебом и другие принципы программирования Мне недавно встретился код вывода количества FP
Не покупайте грузовик для похода за хлебом и другие принципы программирования Мне недавно встретился код вывода количества FPS на экран, написанный начинающим программистом, и в этом коде был базовый класс, класс-потомок, виртуальные функции, конструктор с множеством параметров, variant. Код позволял выводить любое количество счетчиков FPS на экран разными шрифтами, но все, что было на самом деле нужно, это простая функция на 3 строки, считающая количество FPS и выводящая его на экран. https://habr.com/ru/articles/888570/ #cpp #programming 👉 @cpp_lib

Улучшенные версии STL-контейнеров из библиотеки Boost Илья Мещерин В любом учебном курсе по C++, даже начального уровня, обязательно изучают, как устроен std::vector. Детали внутреннего устройства std::vector в подробностях продолжают изучать в вузах, спрашивать на собеседованиях, обсуждать на конференциях. То же самое происходит с контейнерами std::list, std::deque, std::map и std::unordered_map: про их реализацию и особенности внутреннего устройства можно говорить бесконечно долго, про них все еще делают доклады, снимают лекции и пишут статьи. И их продолжают использовать в продакшен-коде даже в самых крупных и известных компаниях. При этом в библиотеке Boost давным-давно есть альтернативные версии контейнеров, которые выигрывают у стандартных по многим показателям. Однако об этих версиях почти никто не знает, о них почти нет лекций, статей и докладов. Пора положить этому конец и разобраться в том, как еще могут быть устроены контейнеры, помимо тех версий из STL, о которых и так все знают. Спикер обсудил внутреннее устройство не таких уж стандартных контейнеров: stable_vector, devector, bimap, circular_buffer, а также интрузивных версий list, map, unordered_map и их разновидностей. источник #cpp #programming 👉 @cpp_lib

👩‍💻 C — это фундамент программирования, а не просто язык. Если вы хотите работать с производительностью, встроенными систем
👩‍💻 C — это фундамент программирования, а не просто язык. Если вы хотите работать с производительностью, встроенными системами и взаимодействием с ОС — пора его освоить В OTUS в рамках онлайн-курса «Программист С» пройдут бесплатные вебинары для разработчиков, админов и IoT-специалистов: 📌11 марта (вт) в 20:00 мск — открытый урок «Практический Си: Разрабатываем игру-викторину» научит вас работать с памятью, использовать стандартную библиотеку и создавать полноценные консольные приложения. ➡️ Регистрация: https://vk.cc/cJpRPx 📌24 марта(пн) в 20:00 мск — открытый урок «Язык и алгоритмы: Увлекательное путешествие в лексический анализ на C». Разработаем простое приложение для лексического анализа простейшего языка программирования на языке С и рассмотрим: -Основные алгоритмы и технологии создания приложений для лексического анализа. -Области применения лексического анализа и особенности реализации. -Поиск и определение ошибок в тексте. ➡️Регистрация: https://vk.cc/cJpRPx Не упустите возможность протестировать курс и познакомиться с экспертами. Полный курс можно будет оплатить любым удобным для вас способом. Для участия нужно пройти тест на странице с описанием курса. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

📌 5 способов ускорить компиляцию C++ проекта Всем доброго вечера, или утра✌️Компиляция C++ — боль, особенно на больших проектах. Сегодня расскажу, как ускорить этот процесс. 🚀 1. Используйте ccache 🔹 ccache кеширует результаты компиляции и повторно использует их при неизменности исходного кода. 🔹 Установка (Linux/macOS):

sudo apt install ccache  # для Ubuntu
brew install ccache  # для macOS
🔹 Использование:

export CC="ccache g++"
export CXX="ccache g++"
⚡ 2. Включите -j в make 🔹 Используйте make -jN, где N — количество потоков. Например:

make -j$(nproc)  # на Linux
make -j$(sysctl -n hw.ncpu)  # на macOS
🔹 Это позволяет компилятору использовать несколько ядер процессора. 🔥 3. Используйте pch (предкомпилированные заголовки) 🔹 Если у вас много инклудов в .cpp файлах, создайте pch файл:

// stdafx.h
#include <iostream>
#include <vector>
#include <map>

g++ -o stdafx.pch stdafx.h
🔹 Теперь подключайте stdafx.pch вместо кучи инклудов. 💨 4. Разделяйте сборку на модули 🔹 Используйте Unity Build (объединение нескольких .cpp в один). 🔹 Или попробуйте C++ модули (`export module`) в новых компиляторах. 🏎️ 5. Собирайте в Release с оптимизациями 🔹 Используйте -O2 или -O3, если важна скорость. 🔹 Для дебага — -Og:

g++ -Og -g main.cpp -o main
Как вы ускоряете сборку? Пишите в комментариях! 🚀 #cpp #programming 👉 @cpp_lib

Плывущий экран. Вирус на C++. Melting Screen Программа предоставлена в образовательных целях! Автор не несёт ответственности за её использование! В этом видео вы узнаете как написать вирус на с++ который заставляет экран сыпаться и плыть. источник #cpp #programming 👉 @cpp_lib

C++ Russia 2025 — конференция с техническими докладами про перформанс, оптимизации, многопоточность и инструменты С++ 🧑‍💻 1
C++ Russia 2025 — конференция с техническими докладами про перформанс, оптимизации, многопоточность и инструменты С++ 🧑‍💻 13 марта онлайн 📍 20–21 марта в Москве в отеле «МонАрх» Вас ждут 39 докладов от 47 спикеров о многопоточности, новых стандартах, компиляторах и неочевидных нюансах C++. Практикующие инженеры и техлиды разберут: → Оптимизации userver: неожиданные способы ускорения shared_ptr, экономии памяти и балансировки. → Type erasure в деталях: как оборачивать полиморфные объекты со «стертыми» типами. → Branch prediction: как работает спекулятивное исполнение и как оптимизировать код в критических местах. Больше докладов — в расписании. Билеты уже на сайте. Если оплачиваете самостоятельно — промокод CPPLIB дает скидку 15% на билеты «Для частных лиц». Реклама. ООО «Джуг Ру Груп». ИНН 7801341446

Алгоритмы манипуляций с битами В статье приведены алгоритмы обработки коротких битовых строк, обычно вмещающихся в машинное с
Алгоритмы манипуляций с битами В статье приведены алгоритмы обработки коротких битовых строк, обычно вмещающихся в машинное слово, в большей степени эти алгоритмы предназначены для обработки строк длины 32 или 64, но многие из них можно применять для SIMD инструкций или даже GPU. https://habr.com/ru/articles/886182/ #cpp #programming 👉 @cpp_lib

Game++. Building arcs Прежде чем рассказать про архитектуры игровых движков, я подумал, что будет полезно немного рассказать
Game++. Building arcs Прежде чем рассказать про архитектуры игровых движков, я подумал, что будет полезно немного рассказать о том, как я понимаю архитектуру ПО и как это связано с играми. Во-первых они (архитектуры) есть, чтобы бы там не врали про игрострой. Во-вторых их оказывается больше одной. Это, возможно, поможет вам понять, почему остальные статьи написаны в таком порядке, или без какого-то порядка. В худшем случае, когда вас втянут в спор о том, насколько отвратительны (или, наоборот, потрясающе гениальны) отдельные игровые движки и их архитектуры, у вас будет пара аргументов и понимание что к чему. Символично, что статья про архитектуру игрового движка появилась после того, как было рассказано про строки, мультипоток, применение алгоритмов: просто оно так и в жизни получается, мы сначала пишем код, редактор, игру - костяк проекта обрастает мясом, и тут нас догоняют проблемы, на которые все забивали, потому что надо было выдать хоть что-то похожее на работающий вариант. Но от того, что мы забивали на проблемы и заметали их под коврик беклога, проблемами быть они не перестали. Вы не получите из статьи знаний об аллокаторах, контейнерах, или математике, стоящей за физикой игры. Так же я не ставлю целью научить вас, как применять A* разбиение в поиске пути неписей или моделировать реверберацию комнаты. Вместо этого есть размышления о коде между всем этим. И даже не столько про написание кода, сколько о его организации. https://habr.com/ru/articles/885780/ #cpp #programming 👉 @cpp_lib

Botan — это мощная криптографическая библиотека на C++, поддерживающая широкий спектр алгоритмов и предназначенная для исполь
Botan — это мощная криптографическая библиотека на C++, поддерживающая широкий спектр алгоритмов и предназначенная для использования в различных проектах. Она отличается модульной архитектурой, хорошей производительностью и кроссплатформенностью. Основные возможности: 🔹 Поддержка симметричных и асимметричных алгоритмов шифрования 🔹 Генерация и управление ключами 🔹 Хеш-функции и HMAC 🔹 Поддержка TLS и сертификатов X.509 🔹 Стандартизованные и экспериментальные криптографические примитивы Библиотека активно развивается и используется в различных областях, включая безопасность сетевых соединений, шифрование данных и аутентификацию. https://github.com/randombit/botan #cpp #programming 👉 @cpp_lib

С++ и безопасность: правда ли все так плохо? Сергей проанализировал недавний отчет NSA и рассказал, так ли плохо обстоят дела с безопасностью в С++ на самом деле и что современная индустрия предлагает для решения этого вопроса. Он разобрал проблемы с безопасностью в С++ на открытых примерах из Chromium, среди которых: — работа с памятью; — UB; — C legacy, строки, арифметика, преобразования типов. Спикер также показал различные подходы к митигации описанных проблем, в частности: — статический анализ; — динамический анализ; — фаззинг-тестирование; — харденинг; — выделение безопасных подмножеств языка: Misra, AUTOSAR, стандарт Google; — методология SDL как комплексное решение; — (бонус) подход KasperskyOS по определению недоверенных компонентов, допускающих наличие уязвимостей, но без возможности их проэксплуатировать и развить атаку. источник #cpp #programming 👉 @cpp_lib

C++ — мощный инструмент, но с ним нужно правильно работать Хотите писать на C++, но настройка окружения кажется головной боль
C++ — мощный инструмент, но с ним нужно правильно работать Хотите писать на C++, но настройка окружения кажется головной болью? ◽️ Компилятор не видит файлы? ◽️Дебаг работает через раз? ◽️VSCode — просто красивый редактор? 💡 Приходите на открытый вебинар «Готовим рабочее место: C++ + VSCode»! 📅 5 марта в 20:00 (мск) Мы разберём: ◽️Как настроить VSCode для C++: компиляторы, расширения, дебаг ◽️Как запускать программы без ошибок и ручной магии ◽️Как сделать среду разработки удобной и эффективной 🎯 А ещё всем участникам подарим скидку на топовый курс «C++ Developer»! 🔗 Регистрация: https://vk.cc/cIZCSZ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🚀Это отличный ресурс для программистов, работающих с C++. Можно найти подробную документацию по стандартной библиотеке, STL,
+1
🚀Это отличный ресурс для программистов, работающих с C++. Можно найти подробную документацию по стандартной библиотеке, STL, различным версиям стандарта C++, а также примеры кода и объяснения по ключевым аспектам языка. Справочник по C++ C++11, C++14, C++17, C++20, C++23, C++26 │ Поддержка компиляторами C++11, C++14, C++17, C++20, C++23, C++26 Справочник по языку C C89, C95, C99, C11, C17, C23 │ Поддержка компиляторами C99, C23 https://ru.cppreference.com/w/ #cpp #programming 👉 @cpp_lib

📌 Оптимизация кода в C++: Используем std::move правильно! Привет, друзья! Сегодня я расскажу об одной из самых частых ошибок, связанных с std::move. Многие знают, что std::move не перемещает объект, а лишь превращает его в rvalue. Но как его использовать правильно? Давайте разбираться! ❌ Ошибка: Бессмысленный std::move

std::string getString() {
    std::string str = "Hello, world!";
    return std::move(str); // ❌ Неэффективно
}
Что здесь не так? Возвращаемый std::string и так является временным объектом (NRVO — оптимизация возврата), и std::move мешает этой оптимизации! В результате компилятор не сможет выполнить перемещение, а вызовет копирование. ✅ Правильный вариант:

std::string getString() {
    return "Hello, world!"; // ✅ NRVO оптимизация
}
🏆 Где std::move полезен? Используйте std::move, когда точно знаете, что объект больше не нужен и его можно переместить:

void processString(std::string str) { /* ... */ }

int main() {
    std::string s = "Example";
    processString(std::move(s)); // 🔥 Теперь перемещение!
}
⚡ Советы: 1️⃣ Не используйте std::move при возврате локальных объектов — дайте компилятору сделать свое дело! 2️⃣ Используйте std::move, когда объект больше не нужен — это ускорит работу кода. 3️⃣ После std::move не используйте переменную, кроме как для присвоения нового значения. #cpp #programming 👉 @cpp_lib

Получите оффер в YADRO всего за 3 дня! 🚀 Компания-лидер инженерной индустрии в России YADRO приглашает C++ Software Engineer
Получите оффер в YADRO всего за 3 дня! 🚀 Компания-лидер инженерной индустрии в России YADRO приглашает C++ Software Engineer на SPRINT OFFER. Команда Телеком ждёт кандидатов сразу в два направления: Telecom Platform и Разработка базовых станций с поддержкой LTE/GSM и 5G Core. Если вам интересно принять участие в разработке первых российский базовых станций стандартов GSM/LTE — присоединяйтесь к команде Телеком. Вы будете с нуля создавать решения для беспроводных мобильных сетей и сопутствующих услуг: от исследований и прототипирования до вывода в коммерческое использование. Большую часть кода разработчики пишут на C++. В зависимости от компонента применяют как последние «фишки» С++20, так и занимаются низкоуровневой оптимизацией кода для повышения производительности. 🔵 Читайте подробности на сайте и оставляйте заявку до 9 марта → по ссылке. Присоединяйтесь к проекту, где сможете создавать системы, которыми будут пользоваться сотни тысяч людей!

👩‍💻 C++: не просто язык, а ключ к карьере в топовой IT-компании! Повышение квалификации на курсе «C++ Developer. Profession
👩‍💻 C++: не просто язык, а ключ к карьере в топовой IT-компании! Повышение квалификации на курсе «C++ Developer. Professional» — ваш ключ к тому, чтобы прокачать навыки и стать востребованным разработчиком. Что вас ждёт: — Работа с новыми стандартами C++20 и C++23. — 14 практических работ для портфолио. — Освоение многопоточного программирования, сетей и работы с данными. — Понимание паттернов проектирования и тонкостей языка. Почему выбирают нас? — Преподаватели — опытные эксперты из ведущих IT-компаний. — Живые лекции, поддержка на каждом этапе обучения. — Диплом OTUS, который ценят работодатели. 🔥 До 28.02 скидка на все курсы 10%, кроме этого дарим промокод CPPPRO2025_02 который прибавляет к скидке еще 5% !!! 🎫 Курс можно приобрести в рассрочку ➡️ Пройти тест и забрать скидку: https://vk.cc/cIX0dR Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Сборка C++ проектов. Пакетный менеджер CONAN. Game Engine серии 0:00:00 - Введение 0:02:43 - Conan. Теория 0:07:31 - Conan. Установка 0:10:44 - Conan. Базовая настройка 0:17:04 - ConanCenter. JSON 0:34:46 - GTest 0:54:43 - Chuck Norris API, cpr 1:15:19 - Автоматизация сборок источник #cpp #programming 👉 @cpp_lib

Проект для мидлов: создайте курс для Яндекс Практикума! Яндекс Практикум — сервис современного онлайн-образования, где обучаю
Проект для мидлов: создайте курс для Яндекс Практикума! Яндекс Практикум — сервис современного онлайн-образования, где обучают актуальным цифровым профессиям. Сейчас есть возможность присоединиться к команде и разработать курс C++ разработчика. Роль автора подойдёт тем, кто любит погрузиться с головой в контент — разрабатывать уроки, задания, тесты, чек-листы, памятки, квизы; нагрузка от 10 часов в неделю. Будущего коллегу окружим комфортом: ▪︎ сотрудничайте с нами удалённо, ▪︎ получайте дополнительный доход, ▪︎ влейтесь в наше энергичное и яркое комьюнити! Посмотрите, что ожидают от кандидата, и откликайтесь, если интересно.