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

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

Открыть в Telegram

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

Больше
7 322
Подписчики
Нет данных24 часа
+47 дней
+1330 день
Архив постов
Практика языка C (МФТИ, 2023-2024). Допсеминар: системы сборки (make, cmake). 00:00 Зависимости и хедера 08:22 Build.sh 11:48 Makefiles и декларативная модель 19:51 Ленивые и переменные 30:52 Автоматические переменные 36:15 Первая версия makefile 41:33 Функции и wildcards 47:40 Вторая версия makefile и зависимости от хедеров 56:36 Третья итерация: почти идеальный makefile 01:06:26 Знакомство с cmake 01:19:35 Бонус. Немного больше про cmake. 01:30:40 Окончательные уроки. источник #cpp #programming 👉 @cpp_lib

"Как вы начинаете, так вы и продолжаете." – Брюс Ли Курс для начинающих «Введение в Реверс инжиниринг» стартует 6 мая (6 мес.
"Как вы начинаете, так вы и продолжаете." – Брюс Ли Курс для начинающих «Введение в Реверс инжиниринг» стартует 6 мая (6 мес.) Курс подойдёт всем интересующимся темой реверс-инжиниринга. По окончанию курса, вы будете уметь проводить исследования исполняемых файлов и вносить изменения в логику программ. Курс для продолжающих «Реверсивный инжиниринг ПО под ОС Windows» начинается 3 июня (6.5 мес.) Курс ведет Андрей Бирюков, автор книг, статей, эксперт и спикер конференций по ИБ. На курсе подробно рассматривается синтаксис Ассемблера, анализ приложений различного уровня сложности, от простейших crackme до полноценных программ на современных архитектурах. Учитесь у лучших! 🏆 Сертификат/удостоверение о повышении квалификации Пишите нам: @Codeby_Academy +74994441750

Преобразование типов данных в языках С и С++ #cpp #programming 👉 @cpp_lib

Приведение типов в C++ 1. static_cast В общем тот же reinterpret_cast, только делает проверку во время компиляции на совместимость. Проверяет можем ли мы сделать downcasting типа, привести тип родителя к типу потомка. Когда заранее известно, что может быть только один тип потомка 2. dynamic_cast Динамическое преобразование типов, когда информация о типе появляется только во время исполнения программы 3. reinterpret_cast Сообщает, что в данном участке памяти лежат те или иные типы данных и он этого никак не проверяет. В данном случае программист сам решает 4. const_cast Снимает const квалификатор. Если понадобился const_cast, то действительно пошло что-то не так и пытаемся снять константность 5. C-style cast Замаскированное применение const_cast, static_cast, reinterpret_cast и их комбинаций. Применяются в следующем порядке • const_cast • static_cast • static_cast + const_cast • reinterpret_cast • reinterpret_cast + const_cast #cpp #programming 👉 @cpp_lib

Разреженные структуры данных Когда-то я писал пост про различные интересные структуры данных. Среди них был т.н. sparse set.
Разреженные структуры данных Когда-то я писал пост про различные интересные структуры данных. Среди них был т.н. sparse set. Там мы описали его в общих чертах, опустив некоторые детали (которыми позже статья была дополнена). Но кроме sparse set существуют и другие разреженные структуры данных! На них сегодня и посмотрим : ) https://habr.com/ru/articles/790844/ #cpp #programming 👉 @cpp_lib

Кто такой архитектор ПО и как им стать? Архитектор ПО — одна из самых востребованных позиций на современном рынке IT. Узнайте
Кто такой архитектор ПО и как им стать? Архитектор ПО — одна из самых востребованных позиций на современном рынке IT. Узнайте, что нужно, чтобы претендовать на эту должность, на бесплатном практическом уроке от OTUS. Спикер — опытный эксперт из крупной компании. На вебинаре разберём: - какую роль выполняет архитектор и зачем он нужен; - какие бывают архитекторы; - чем отличается архитектура от проектирования. Встречаемся 20 мая в 19:00 мск в рамках курса «Software Architect». Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS! Ссылка для регистрации: https://vk.cc/cwqlRM Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Практика языка C (МФТИ, 2023-2024). Интермедия. Стандарт языка C. На этом занятии мы поговорим о стандарте C. Мы начнём с попытки изобрести очень простой язык программирования и увидим на его примере основные особенности поведения высокоуровневых программ. Далее мы подробно разберём разные формы поведения программ на языке C, познакомимся и потренируемся со стандартом языка. У нас будет один вставной момент где я учу детей разбивать программы на модули и писать тесты. Это связано с тем что они сейчас делают проекты, можете это пропустить если смотрите эту лекцию в отрыве от основного курса. В конце я приготовил небольшое рассуждение про важность стандартизации. 00:00 Язык программирования INC и поведение программ 12:38 Семантика и стандарт языка 23:50 Поведение программ 34:15 Неопределённое поведение 47:17 Тренировка в чтении стандарта и время решать задачи 50:20 Немного информации про проект и live coding 01:08:43 Стандарт как источник знаний 01:19:11 Важность стандартизации источник #cpp #programming 👉 @cpp_lib

C++. std::make_unique_for_overwrite, std::make_shared_for_overwrite и std::allocate_shared_for_overwrite C++ 440. Набор функций создания умных указателей в C++20: std::make_unique_for_overwrite, std::make_shared_for_overwrite и std::allocate_shared_for_overwrite. Стандарт C++20 представил новый набор функций создания умных указателей: std::make_unique_for_overwrite, std::make_shared_for_overwrite и std::allocate_shared_for_overwrite. Эти варианты инициализируют выделенную память значениями по умолчанию, в отличие от предыдущих вариантов с инициализацией значениями. Это позволяет избежать дублирующей инициализации POD типов при немедленной перезаписи памяти. #include <memory> #include <memory_resource> auto p1 = std::make_unique_for_overwrite<int>(); // decltype(p1) == std::unique_ptr<int>, *p1 == неопределенное значение auto p2 = std::make_shared_for_overwrite<int>(); // decltype(p2) == std::shared_ptr<int>, *p2 == неопределенное значение std::pmr::monotonic_buffer_resource mr; std::pmr::polymorphic_allocator<int> alloc{&mr}; auto p3 = std::allocate_shared_for_overwrite<int>(alloc); // decltype(p3) == std::shared_ptr<int>, *p3 == неопределенное значение // Перегрузки также поддерживают массивы, инициализируемые по умолчанию auto p4 = std::make_unique_for_overwrite<int[]>(7); // 7 элементов // decltype(p4) == std::unique_ptr<int[]>, p4[0] == неопределенное значение auto p5 = std::make_shared_for_overwrite<int[]>(7); // decltype(p5) == std::shared_ptr<int[]>, p5[0] == неопределенное значение auto p6 = std::allocate_shared_for_overwrite<int[]>(alloc, 7); // decltype(p6) == std::shared_ptr<int[]>, p6[0] == неопределенное значение https://medium.com/@simontoth/daily-bit-e-of-c-std-make-unique-for-overwrite-std-make-shared-for-overwrite-and-34875c161fbd #cpp #programming 👉 @cpp_lib

⁉️ Каких разработчиков берут в свою команду российские IT-гиганты? Тех, кто следит за изменениями рынка и владеет современным
⁉️ Каких разработчиков берут в свою команду российские IT-гиганты? Тех, кто следит за изменениями рынка и владеет современными инструментами. Станьте одним из них — освойте кросс-платформенный фреймворк Qt всего за 5 месяцев на онлайн-курсе «Разработка прикладного ПО на Qt и ОС «Аврора» от OTUS. После обучения вы: - освоите Qt — одну из лучших кросс-платформенных библиотек для разработки UI на С++; - изучите нативную разработку для Авроры 5.0, сможете участвовать в проектах по созданию мобильных приложений для государственных компаний и крупного бизнеса; - научитесь писать программы на QML; - научитесь создавать, масштабировать и видоизменять приложения на Qt; - сможете создавать приложения под модули Qt: датчики, мультимедиа, геолокацию. Стартуем 26 апреля! Есть рассрочка и специальная цена. 👉 Пройдите короткий тест и узнайте, готовы ли вы к расширению карьерных возможностей: https://vk.cc/cwpn03 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

📚Learn C++ by Example: Covers versions 11 to 23 Frances Buontempo (2024) Эта книга — веселый и практичный способ начать писа
📚Learn C++ by Example: Covers versions 11 to 23 Frances Buontempo (2024) Эта книга — веселый и практичный способ начать писать современный код на C++. В ней вы пройдете через занимательные задачи, подчеркивая возможности и приемы, ставшие возможными благодаря C++ 17, 20 и 23. Вы узнаете об объектах и массивах, создав колоду игральных карт, освоите библиотеку C++ random для игры в угадывание чисел, используете библиотеку chrono для создания таймера обратного отсчета и многое другое. Попутно вы почерпнете ценные советы по тестированию, организации проектов и другим навыкам продуктивности. #cpp #programming 👉 @cpp_lib

Как исключения C++ легко делают ваше программное обеспечение лучше и безопаснее В чем проблема? Если ваше программное обеспеч
Как исключения C++ легко делают ваше программное обеспечение лучше и безопаснее В чем проблема? Если ваше программное обеспечение не проверяет и не устраняет ошибки, ваша программа может быть ненадежной. Клиенты сочтут это некачественным программным обеспечением. Многие реальные программы не должны завершаться аварийно, и не только те, которые управляют медицинскими приборами или ракетами. Если исключения не используются или не обрабатываются должным образом, процесс завершается аварийно. При вызове std::abort() или если реализация не разворачивает стек перед вызовом std::terminate(), деструкторы объектов могут не вызываться, а внешние ресурсы могут оставаться в неопределенном состоянии. Ненормальное завершение процесса - типичный вектор для атак типа "отказ в обслуживании" (DOS). https://nexwebsites.com/blog/cpp_exceptions/ #cpp #programming 👉 @cpp_lib

🦾 Научитесь писать корректный код на С++, учитывая возможности новых стандартов Всего за 5 месяцев вы освоите современные ин
🦾 Научитесь писать корректный код на С++, учитывая возможности новых стандартов Всего за 5 месяцев вы освоите современные инструменты для более эффективной разработки и повышения грейда. Записывайтесь на онлайн-курс «C++ Developer. Professional» от OTUS. Программа идеально подходит для разработчиков на C++ уровней Junior или Middle, а также разработчиков на Java и Python. На курсе вас ждут: - живые вебинары с возможностью задать вопросы экспертам; - много практики и сильные проекты для портфолио; - поддержка профессионального комьюнити; - рассрочка на комфортных условиях. 👉 Пройдите короткий тест и узнайте, готовы ли вы к расширению карьерных возможностей: https://vk.cc/cwmvdg Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

C++. Ограничение noexcept Реализация обобщенного кода C++ может быть сложной, поскольку любая операция потенциально может выкинуть исключение. Примечательно, что, когда требуется строгая гарантия исключений, это может значительно усложнить код и привести к накладным расходам во время выполнения (или даже к изменению сложности «O большого»). К счастью, для обеспечения соблюдения гарантий noexcept во время компиляции концепты можно использовать C++20. #include <utility> struct UnsafeType { UnsafeType() = default; UnsafeType(UnsafeType&&) {} UnsafeType& operator=(UnsafeType&&) { return *this; } }; template <typename T> void unsafe_swap(T& left, T& right) { auto tmp = std::move(left); left = std::move(right); // Что будет, если этот move выкинет исключение? // было выполнено перемещение значения из left, // и перемещение этого значения в right снова может выкинуть исключение right = std::move(tmp); } struct SafeType { SafeType() = default; SafeType(SafeType&&) noexcept {} SafeType& operator=(SafeType&&) noexcept { return *this; } }; template <typename T> requires requires (T& a, T& b) { // присваивание перемещением допустимо и не выкидывает исключение { a = std::move(b) } noexcept; } void safe_swap(T& left, T& right) { auto tmp = std::move(left); left = std::move(right); right = std::move(tmp); } SafeType a, b; safe_swap(a, b); // OK UnsafeType x, y; // Не скомпилируется: // safe_swap(x, y); // UnsafeType не удовлетворяет требованию noexcept https://medium.com/@simontoth/daily-bit-e-of-c-constraining-on-noexcept-fe477cc2bbe1 #cpp #programming 👉 @cpp_lib

std::exception — это базовый класс для всех стандартных исключений в C++ Почему стоит наследоваться от std::exception? • Един
std::exception — это базовый класс для всех стандартных исключений в C++ Почему стоит наследоваться от std::exception? • Единообразие в обработке исключений: Когда вы наследуетесь от std::exception, ваш класс исключения приобретает интерфейс, который делает его совместимым с другими стандартными исключениями • what() метод: std::exception предоставляет важный метод what(), который возвращает строковое представление исключения. Это позволяет вам предоставлять информативные сообщения об ошибке при обработке исключений • Легкость в поддержке кода: Если вы используете сторонние библиотеки или фреймворки, они также могут ожидать обработку исключений, производных от std::exception • Стандартные типы исключений: std::exception имеет несколько стандартных подклассов, таких как std::runtime_error, std::logic_error и другие. Вы можете использовать эти подклассы вместо базового std::exception, чтобы более точно определить характер ошибки #cpp #programming 👉 @cpp_lib

Дерево отрезков Всем привет. В этой статье я расскажу про дерево отрезков. Дерево отрезков - это очень мощная структура данны
Дерево отрезков Всем привет. В этой статье я расскажу про дерево отрезков. Дерево отрезков - это очень мощная структура данных, которая позволяет делать много разных операций над массивом чисел. Я постараюсь по полочкам разложить эту тему и объяснить возможности дерева отрезков. Также я разберу несколько нетривиальных задач на дерево отрезков. Помимо самого дерева отрезков я расскажу и про связанные темы: дерево Фенвика, разреженные таблицы. https://habr.com/ru/articles/808511/ #cpp #programming 👉 @cpp_lib

Вы все еще пишете многопоточку на C++ с ошибками синхронизации? Привет, коллеги! В этой статье я покажу свой подход к написанию многопоточного кода, который помогает избежать типовых ошибок, связанных с использованием базовых примитивов синхронизации. Демонстрация идеи будет проходить на живых примерах кода на современном C++. Большинство описанных решений я применял сначала на собственных проектах, а теперь часть этих подходов уже используется в нашей собственной микроядерной операционной системе «Лаборатории Касперского» (KasperskyOS). https://habr.com/ru/companies/kaspersky/articles/805365/ #cpp #programming 👉 @cpp_lib

#вакансия #job #vacancy #remote #parttime #наставник Компания: OTUS – образовательная платформа. За более чем 7 лет работы мы создали более 180 авторских курсов для IT-специалистов разного уровня от Junior до Senior. Практически на каждом нашем курсе есть вступительное тестирование для наших студентов, плюс более 650 преподавателей-практиков из крупнейших компаний. Мы учимся друг у друга, советуемся, помогаем, делимся опытом и обсуждаем новости как в преподавании, так и в IT. Вакансия: Наставник на онлайн-курс «Программист С». Предстоит проверять около 5-20 домашних заданий в неделю. Эта вакансия предполагает частичную занятость. Требуется практический опыт работы по тематике курса. Можно без опыта преподавания. Мы с удовольствием поможем Вам освоить Best Practices преподавания: для этого у нас есть бесплатный курс подготовки. Наставник проверяет домашние задания и дает письменный фидбэк, помогает студентам разобраться в материале. Условия: ✅ удаленное сотрудничество, занятость part-time. ✅ оплата от 300 до 400 руб. за проверку 1-го домашнего задания. ✅ наши методисты помогают освоить лучшие инструменты и практики преподавания. Еще Вы сможете: ✅ внести свой вклад в развитие IT. ✅ структурировать свой опыт и знания. ✅ развивать личный бренд. ✅ прокачать софт-скиллы. Бонусы: ✅ наши курсы со скидкой/бесплатно. ✅ возможность приглашать в свою команду на работу лучших выпускников. ✅ воркшопы и конференции. Подробнее в telegram: @ElenaAlias

Семантические процессы в C++ Константин Владимиров В языке C++ есть синтаксис и семантика. Когда мы говорим о синтаксисе, мы говорим о контекстно-независимых конструкциях, которые просто что-то означают. Например, if — это всегда if. Но когда мы говорим о семантике, мы сталкиваемся с необходимостью для компилятора что-то сделать или что-то выяснить: разрешить имя, инстанцировать шаблон, вывести тип, вычислить константное выражение. Можно сказать что в каждый такой момент мы стартуем некий процесс, развивающийся по своим правилам. Этот доклад посвящен описанию взаимодействующих семантических процессов в языке, как с точки зрения внутренностей компилятора, так и с точки зрения стандарта языка. источник #cpp #programming 👉 @cpp_lib

📚Building Low Latency Applications with C++ Sourav Ghosh (2023) Develop a complete low latency trading ecosystem from scratc
📚Building Low Latency Applications with C++ Sourav Ghosh (2023) Develop a complete low latency trading ecosystem from scratch using modern C++. C++ is meticulously designed with efficiency, performance, and flexibility as its core objectives. However, real-time low latency applications demand a distinct set of requirements, particularly in terms of performance latencies. C++ is meticulously designed with efficiency, performance, and flexibility as its core objectives. However, real-time low latency applications demand a distinct set of requirements, particularly in terms of performance latencies. With this book, you’ll gain insights into the performance requirements for low latency applications and the C++ features critical to achieving the required performance latencies. You’ll also solidify your understanding of the C++ principles and techniques as you build a low latency system in C++ from scratch. You’ll understand the similarities between such applications, recognize the impact of performance latencies on business, and grasp the reasons behind the extensive efforts invested in minimizing latencies. Using a step-by-step approach, you’ll embark on a low latency app development journey by building an entire electronic trading system, encompassing a matching engine, market data handlers, order gateways, and trading algorithms, all in C++. Additionally, you’ll get to grips with measuring and optimizing the performance of your trading system. By the end of this book, you’ll have a comprehensive understanding of how to design and build low latency applications in C++ from the ground up, while effectively minimizing performance latencies. #cpp #programming 👉 @cpp_lib

🔥 Освой разработку ПО на QT и ОС Аврора и получи возможность попасть в крупную IT-компанию! Пройди тест из 20 вопросов и про
🔥 Освой разработку ПО на QT и ОС Аврора и получи возможность попасть в крупную IT-компанию! Пройди тест из 20 вопросов и проверь, насколько хорошо nы знаешь язык C++ и готов освоить QT и ОС Аврора . Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработка прикладного ПО на Qt и ОС Аврора" от OTUS. 👉 ПРОЙТИ ТЕСТ: https://vk.cc/cwgIiq Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru