Библиотека C/C++ разработчика | cpp, boost, qt
21K subscribers
1.57K photos
40 videos
16 files
3.74K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Наши каналы: https://yangx.top/proglibrary/9197

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
加入频道
Что за ошибка в приведенном ниже коде и как ее исправить?

Последним аргументом memset должен быть sizeof(*bar), а не sizeof(bar). sizeof(bar) вычисляет размер bar (то есть самого указателя), а не размер структуры, на которую указывает bar. Поэтому код можно исправить, используя sizeof(*bar) в качестве последнего аргумента вызова memset.
Сравниваем 2 строки на одинаковые буквы

Для сравнения двух строк на одинаковые буквы можно использовать стандартную функцию strcmp() из библиотеки.

В данном примере две строки "hello" и "holle" сравниваются на одинаковые буквы. Функция strcmp() возвращает 0, если строки совпадают, и любое другое число, если строки не совпадают. Если строки содержат одинаковые буквы, выводится сообщение "Строки содержат одинаковые буквы", иначе - "Строки содержат разные буквы".
Числа с плавающей точкой для гуманитариев. Что это такое и как они работают

На данную тему уже написано большое количество статей, однако многие из них используют пугающие математические формулы и нотации, что может быть сложно для понимания новичкам. В этой статье автор простым языком попытался раскрыть данную тему и помочь решить ряд вопросов.

Читать статью
Алгоритмы компрессии данных: принципы и эффективность

В современном информационном обществе объем данных стремительно растет, и с каждым годом все больше информации генерируется и обрабатывается. В связи с этим важным аспектом стало умение эффективно управлять данными, чтобы не только сохранить информацию, но и оптимизировать ее использование и передачу. Одним из основных инструментов для достижения этой цели является компрессия данных.

Читать статью
🔥 Шаблоны и метапрограммирование в C++

Урок для тех, кто уже чётко понимает что такое ООП, может отличить инкапсуляцию от сокрытия данных и знает что такое полиморфизм.

Здесь вы узнаете про шаблоны, как это представляет себе язык, про явную и частную специализацию, про паттерн Singleton.

Смотреть видео
🔥 Теоретический минимум по Computer Science

Computer Science рассказывает о том, как работает компьютер, что такое двоичная система, что за структуры данных и как их использовать.

Это видео — база по Computer Science, которую должен знать каждый программист. Здесь про блок схемы, вентили и работу двоичных систем.

Смотреть видео
Узнаем сколько лет человеку по дате его рождения

В этом коде мы запрашиваем у пользователя его дату рождения, а затем получаем текущую дату с помощью функции time. Затем мы используем структуру tm для извлечения года, месяца и дня из текущей даты и вычисляем количество полных лет с помощью формулы now->tm_year + 1900 - year. Если текущий месяц и день меньше, чем месяц и день рождения, мы уменьшаем возраст на 1. Наконец, мы выводим результат на экран.
#код
Пользуетесь ли вы какими-либо иностранными новостными ресурсами по программированию на регулярной основе? Если да, то какими?
#интерактив
Важно: правила площадки❗️

1️⃣ За спам, рекламу, ботоводство, скам — бан и удаление всех комментариев

2️⃣ За оскорбления группы/канала/админа/других участников, политические дебаты — первый раз удаление, второй раз — профилактический бан на неделю, третий раз — бан

3️⃣ За ссылки на нелегальные ресурсы — первый раз удаление, второй раз — бан

Напоминаем, что написать нам можно сюда: @proglibrary_feedback_bot

Пожалуйста, соблюдайте правила — мы со своей стороны тоже будем стараться максимально оперативно модерировать комментарии.
Как сделать увлекательное видео по программированию

Создание скринкаста может стать для вас отличным способом поделиться своими знаниями и помочь другим разработчикам в вашей команде. Однако не все видеоуроки одинаково эффективны. В этом руководстве описано, как создавать увлекательные и информативные видеоролики по программированию, которые произведут впечатление на ваших коллег.

Читать статью
#вопросы_с_собеседований
Что такое Undefined behavior?

Undefined behavior — это непредсказуемое поведение программы, которое происходит, когда в коде содержится операция, которая не определена стандартом языка.

Такое поведение может возникнуть, когда код пытается обратиться к неопределенной переменной, делить на ноль, выходить за пределы массива или выполнять другие операции, которые противоречат правилам языка.

Ошибки в таком коде могут проявляться разнообразными способами, включая прекращение работы программы, непредсказуемые выходные данные, повреждение памяти или даже повреждение операционной системы. Избегайте Undefined behavior в своем коде, чтобы обеспечить надежность и безопасность системы.
Что такое rvalue, lvalue?

lvalue — это всё, что имеет имя, rvalue — это то, что имени не имеет. Исторически сложились такие названия, потому что lvalue всегда было то, что писалось с левой стороны присваивающего выражения, а rvalue — это то, что появлялось только справа от этого выражения.
#код
Пишем простые крестики-нолики на C++

В этой статье напишем классические крестики-нолики на двух игроков. Так как в каждой такой статье мы должны учиться чему-то новому, то на этот раз познакомимся с тернарными операторами и сразу же применим их на практике. Как всегда в конце будет ряд идей по тому, как можно улучшить игру.

Смотреть статью
Расскажите, какие YouTube-каналы смотрите по тематике программирования?
#интерактив
Вышмат для тех, кто интересуется DS, ML, AI

👉 Подробности – https://proglib.io/w/6426c2a6

Как говорят наши студенты «Я понимаю, куда движется сфера IT, уже в каждой компании есть отдел, который отвечает за ИИ, эта сфера точно останется востребованной ближайшие 10-15 лет, поэтому сейчасл лучшее время начать учиться»‎

💰Стоимость?

– Доступна беспроцентная рассрочка от 2 499 рублей в месяц. Или сразу 29 990 рублей.

Как проходит обучение?

– Записанные лекции от преподавателей МГУ
– Домашние задания и развернутая обратная связь
– Чат с куратором и студентами

Когда можно приступать?

– В любой момент

Оставить заявку на пробную версию курса «Математика для Data Science» – https://proglib.io/w/6426c2a6
std::variant

Это фича C++17, обеспечивающая типобезопасное объединение, позволяющее хранить и манипулировать значениями разных типов в одном объекте. Она является частью стандартной библиотеки C++ и определена в заголовке .

Шаблонный класс std::variant похож на упрощенную версию union, но с дополнительной безопасностью типов и поддержкой различных операций.

Основными функциями std::variant являются index(), valueless_by_exception(), operator=, emplace.

В этом примере мы создаем объект var, который может содержать значения типов int, float или std::string. Мы присваиваем var различные значения и получаем их с помощью std::get.

Однако, если мы попытаемся получить значение, используя неправильный тип (например, std::get(var), когда вариант содержит std::string, это вызовет исключение std::bad_variant_access.
#код
Очередной #дайджест по C/C++:
🤖 Внутри boost::concurrent_flat_map
🤖 C++23: следующий стандарт C++
🤖 Конечный автомат с std::variant
🤖 Отчет о поездке: C++ on Sea 2023
🤖 Ограничьте пользовательские конверсии

И пара полезных инструментов:
QGIS — это бесплатная кросс-платформенная (lin/win/mac) географическая информационная система с открытым исходным кодом.
shotcut — кроссплатформенный (Qt), видеоредактор с открытым исходным кодом (GPLv3)
OpenCat — платформа с открытым исходным кодом для разработки четвероногих роботов в стиле Boston Dynamics, которая идеально подходит для STEM, программирования робототехники, приложений для робототехники IoT, сервисов приложений для робототехники с улучшенным ИИ и исследований.

Открыть библиотеку
Использование выражений сгиба

С C++17 мы можем использовать складывать выражения для объединения последовательности std::arrays, это элегантное и эффективное решение продемонстрировано выше.
#код
SIMD (Single Instruction Multiple Data)

Это технология, позволяющая одновременно выполнять одну и ту же операцию над несколькими наборами данных. В современных процессорах SIMD-инструкции реализованы для ускорения работы с векторными операциями. В C++ SIMD-инструкции доступны через библиотеку immintrin.h.

В данном примере функция addVectors принимает на вход указатели на три массива a, b и c, каждый из которых содержит 8 элементов типа float. С помощью функции _mm256_loadu_ps происходит загрузка первого и второго векторов в регистры, затем с помощью функции _mm256_add_ps происходит их покомпонентное сложение. Результат сохраняется в третий вектор с помощью функции _mm256_storeu_ps.
#код