Библиотека 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
加入频道
🐧📖 ТОП-10 книг по Linux в 2023 году

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

Читать статью
std::any_cast

std::any_cast используется для приведения объектов типа std::any к конкретному типу данных во время выполнения программы.

Класс std::any может хранить данные любого типа, но при этом теряется информация о реальном типе данных.
Чтобы получить эти данные обратно в изначальный тип, и используется std::any_cast. Он проверяет, совместим ли хранимый в std::any объект с запрошенным целевым типом.
Если совместим — возвращает ссылку на данные нужного типа.

Например, если в std::any был помещен объект типа int, то с помощью std::any_cast этот int можно получить обратно в переменную типа int. Аналогично для других типов данных.
#код
std::reference_wrapper

std::reference_wrapper — это класс в C++, предоставляемый стандартной библиотекой, который оборачивает ссылку на объект. Этот класс полезен, когда вам нужно передать или хранить ссылку на объект, но вы хотите избежать неявного копирования объекта.

Основное назначение std::reference_wrapper заключается в том, чтобы позволить передавать ссылки как аргументы функций, которые обычно ожидают копии объектов. Это особенно полезно, например, при использовании алгоритмов из стандартной библиотеки, которые могут копировать элементы контейнера, если не явно указано иначе.
#код
Очередной #дайджест по С++:

✍️ Проклятые Земли. Изменяем движок игры! Подробности + ПРИМЕР реверсинга движка
Статья о том, как реверс-инжиниринг и разбор форматов могут не только расширить старую любимую игрушку, но и сделать из неё абсолютный шедевр, который будет смотреться уже в новом свете.

✍️ Психический симулятор или Triumvirate of Hearts
Автор решил поделиться своей игрой и своими исследованиями в области психологии.

✍️ Как устроен PassMark. Воспроизводим тесты из машинного кода
Что находится под капотом у легендарной программы для бенчмаркинга? Автор предлагает изучить ее алгоритмы тестирования и воспроизвести их самостоятельно на других языках программирования, чтобы иметь независимую возможность получения оценки производительности.

✍️ Принцип проектирования API: чтение свойства или добавление обработчика событий не должно изменять наблюдаемое поведение
Статья из блога Майкрософт.
Что вы чаще всего гуглите по работе?
#интерактив
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
std::enable_if

std::enable_if — это шаблон, который позволяет условно включать функциональность в зависимости от удовлетворения какого-либо условия.
Шаблон определен в заголовочном файле и позволяет "включить" код, если некое условие истинно, и "выключить", если ложно.

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

В примере enable_if включит реализацию is_even только для целочисленных T. Для не целых типов компиляция завершится с ошибкой.
Таким образом, enable_if позволяет гибко управлять логикой и функциональностью на этапе компиляции.
#код
Что такое TDD?

TDD (Test-Driven Development) — это подход к разработке программного обеспечения, при котором сначала пишутся автоматические тесты, определяющие желаемое поведение кода, а затем реализуется минимально необходимый код, чтобы пройти эти тесты.

Основные принципы TDD:
— Написание теста перед кодом: сначала пишется тест, определяющий желаемую функциональность. Затем пишется минимальный код, чтобы пройти этот тест.
— Рефакторинг: после прохождения теста код рефакторится для улучшения структуры и читаемости, при этом все тесты должны оставаться пройденными.
— Повторение: цикл повторяется — новый тест, код, рефакторинг.
— Тесты должны быть автоматизированными и запускаться очень часто.

Преимущества TDD: предотвращение дефектов, улучшение структуры кода, быстрая обратная связь.
TDD позволяет создавать код, удовлетворяющий требованиям и хорошо тестируемый.
#вопросы_с_собеседований
is_sorted_until

Этот алгоритм проверяет, отсортирован ли заданный диапазон данных.
Он возвращает итератор на первый элемент, нарушающий порядок сортировки.

Алгоритм принимает 3 параметра:
— Итератор на начало проверяемого диапазона.
— Итератор на конец диапазона.
— Компаратор для сравнения элементов (по умолчанию less).

Алгоритм идет по диапазону от начала к концу и сравнивает каждый элемент с предыдущим с помощью компаратора.
Если нарушения порядка не найдено, возвращается итератор на конец диапазона. Иначе возвращается итератор на первый нарушающий элемент.

Этот алгоритм удобен, чтобы проверить, в какой момент отсортированный диапазон теряет порядок.
#код
🦾 Основы использования C/C++

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

Смотреть видео
Монитор с какой диагональю чаще всего используете на работе?
#интерактив
Ответьте на 3 вопроса, чтобы получить демо-доступ к курсу «Алгоритмы и структуры данных»

⚡️Получить демо, ответив на 3 вопроса – https://proglib.io/w/979a2896

В бесплатной части вас ждут:

1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов

2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ

3. Практические задания после лекций

4. Ссылки на дополнительные материалы для самостоятельного изучения

Переходите и начинайте учиться уже сегодня!
std::apply

std::apply — это функция, которая принимает в качестве аргументов вызываемый объект и кортеж аргументов, а затем вызывает этот объект с элементами кортежа в качестве аргументов. Это позволяет удобно вызывать функции с аргументами, хранящимися в кортеже.

В этом примере мы создаем кортеж args, содержащий два аргумента для функции add. Затем мы используем std::apply для вызова функции add с этими аргументами. В конце мы выводим результат на экран.
#код
Очередной #дайджест по С++:

✍️ C++23: четыре новых ассоциативных контейнера
В C++23 появились четыре новых ассоциативных контейнера: std::flat_map, std::flat_multimap, std::flat_set и std::flat_multiset, которые являются полноценной заменой упорядоченных ассоциативных контейнеров std::map, std::multimap, std::set и std::multiset.

✍️ Детекция машин на мобилке в 2023. С какими проблемами мы столкнулись и как решали
Как распознавали машины с камеры мобильного телефона с помощью TensorFlow-lite, C++, Qt и что из этого вышло.

✍️ Как и зачем мы парсим XML
Этот язык разметки настолько глубоко вошел в нашу жизнь, что сложно представить систему, в которой не используется он сам или его подмножества.

✍️ Опечатки, нулевые указатели и коварный таб: 33 фрагмента в библиотеке GTK
GTK – популярный фреймворк с открытым исходным кодом для создания графических интерфейсов.