C++_BE1
407 subscribers
278 photos
1 video
42 files
519 links
Канал по C/C++, полезный и интересный контент для всех уровней.
По вопросам сотрудничества @cyberJohnny
Download Telegram
➡️ Check

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

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

• Для модульного тестирования на языке С++ используется Google C++ Testing Framework (Google Test).

🔗 Ссылочка на доку (https://github.com/libcheck/check)

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
🎯 Освой разработку ПО на QT и ОС Аврора

Пройди тест из 20 вопросов и проверь, насколько хорошо nы знаешь язык C++ и готов освоить QT и ОС Аврора .
Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработка прикладного ПО на Qt и ОС Аврора" от OTUS.

👉 ПРОЙТИ ТЕСТ: https://clck.ru/3BwyxA

🎫 Начни обучение со скидкой в 10%, действует до конца июля.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ ZBar

Библиотека ZBar предназначена для распознавания штрихкодов из изображений.

• ZBar имеет предельно простую и логичную документацию без «тёмной магии» и необъяснимых функций.

• Работать с ней легко и удобно. Можно использовать из программных интерфейсов С, С++, Питона и других языков программирования.

🔗 Ссылочка на доку (https://github.com/mchehab/zbar)

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
➡️ Active Template Library

ATL (Active Template Library) — это библиотека шаблонов C++ с открытым исходным кодом, созданная для упрощения программирования объектов COM.

• Поддерживает функции COM, такие как стандартные реализации, двойные интерфейсы и ActiveX-контролы.

• Разработана Microsoft как замена MFC для COM-объектов, используя шаблон CRTP.

🔗 Ссылочка на доку (https://learn.microsoft.com/en-us/cpp/atl/active-template-library-atl-concepts?view=msvc-170&viewFallbackFrom=vs-2019)

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
🦾Хардкорный тест по языку С🦾

📌Пройдите тест из 20 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «Программист С» от OTUS. Сможете сдать - пройдете на курс по спеццене!

Время прохождения теста ограничено 30 минут

👉ПРОЙТИ ТЕСТ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍1
➡️ FloatX

FloatX — это библиотека для эмуляции чисел с плавающей запятой низкой точности. Ее можно использовать в программах на C++, Python и Fortran.

• Заголовочная библиотека: расширяет типы с плавающей запятой за пределы одинарной и двойной точности.

• Шаблонные типы: позволяют задать количество бит для экспоненты и других важных частей чисел с плавающей запятой.

• Разработана на C++: основана на библиотеке FlexFloat (разработана на C), использует обертки на C++.

• Расширенные функциональности: предоставляет надмножество возможностей FlexFloat.

• Ограничения: не реализует произвольные типы чисел с плавающей запятой.

🔗 Ссылочка на доку (https://github.com/oprecomp/FloatX)

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
👍Пройдите тест по IoT👍

📌Пройдите тест из 10 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «IoT Developer» от OTUS. Сможете сдать - пройдете на курс со скидкой!

Время прохождения теста ограничено 10 минут

👉ПРОЙТИ ТЕСТ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ oneTBB

oneTBB (oneAPI Threading Building Blocks) — это библиотека на C++ для упрощения добавления параллелизма в сложные приложения.

• Гибкость: облегчает написание параллельных программ на C++.

• Многопоточность: не нужно быть экспертом по потокам для использования.

• Функции: предоставляет набор функций, классов и интерфейсов для параллелизации и масштабирования кода.

• Совместимость: работает с другими библиотеками потоков.

• Программирование: ориентирована на масштабируемое и параллельное программирование, а не просто на потоки.

🔗 Ссылочка на доку (https://github.com/oneapi-src/oneTBB)

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
🤝 Сидите на работе, пишете код и чувствуете, что застряли в рутине?
Ваши проекты скучны, а возможности ограничены? Хотите создавать крутые приложения для современной техники и работать с крупными государственными компаниями и бизнесом?

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

Присоединяйтесь к онлайн-курсу «Разработка прикладного ПО на Qt и ОС «Аврора» и сделайте этот прыжок в будущее!

Что вам даст этот курс:

- освоите Qt — одну из лучших кроссплатформенных библиотек для разработки UI на С++;
- изучите нативную разработку для Авроры 5.0;
- изучите структуру библиотеки Qt и научитесь писать программы на QML.

И многое другое!

👉Пройдите тест, проверьте, хватит ли вам навыков для обучения на курсе: https://clck.ru/3C5FXw

🎫 Начните обучение со скидкой в 10%, действует до конца июля.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Оптимизация работы с большими массивами: Использование std::vector и перемещения

В C++ работа с большими массивами может быть неэффективной, если каждый раз создавать копии данных.

• Вместо этого можно воспользоваться возможностями стандартной библиотеки, такими как std::vector и перемещение (move semantics), чтобы улучшить производительность.

• std::vector — это динамический массив с возможностью автоматического управления памятью.

• Перемещение (std::move) позволяет передать владение данными без копирования, что существенно снижает накладные расходы при работе с большими объемами данных.

• После перемещения myVector остаётся в валидном, но неопределённом состоянии. В данном случае его размер будет равен 0.

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
Что будет выведено при выполнении кода?

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
➡️ Индексирование массива (Оператор подиндексации) является коммутативным

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

int arr[] = {1, 2, 3, 4};
std::cout
➡️ Собственный new для класса

Оператор new в классе Widget должен работать так:

• Установить глобальный обработчик для new через set_new_handler, указав функцию из класса Widget.

• Вызвать глобальный operator new. Если он не справится, сработает обработчик Widget.

• Если и это не поможет, глобальный new выбросит исключение. В этом случае обработчик Widget должен восстановить исходный обработчик и передать исключение дальше.

• Если память выделена успешно, вернуть указатель и восстановить предыдущий обработчик new.

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
➡️ Использование set_new_handler

• Обработчик оператора new циклически ищет память.

• Можно зарезервировать и освободить память при первом вызове.

• Можно установить или удалить другой обработчик.

• Нулевой указатель через set_new_handler вызывает исключение сразу.

• В обработчике new можно вызвать исключение bad_alloc или завершить программу с помощью abort или exit.

• Для конкретного типа объектов можно задать свои set_new_handler и operator new.

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
➡️ Инициализация и присваивание

Между инициализацией и присваиванием есть тонкая разница.

• Инициализация означает присвоение значения переменной в момент её создания, а присваивание относится к изменению значения переменной на другое.

// Это инициализация. Хорошая практика —
// инициализировать переменную сразу при её создании.
int i = 0;

// Это присваивание, где начальное значение
// заменяется новым.
i = 10;

• В C++11 переменную можно инициализировать несколькими способами:

int i = {0};
int i{0};
int i(0);

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
➡️ Разделяемые блокировки

Разделяемые блокировки полезны, когда:

• Блокировка удерживается долго.
• Несколько читателей могут одновременно её захватывать.

Схема разделяемой блокировки может быть эффективной, если:

• Блокировка удерживается длительное время, например, при работе с большим контейнером.

Основной вопрос:

• Не "пишу ли я в данные", а "как долго блокировка будет удерживаться читателями по сравнению с временем её захвата?"

C++ Learning (https://t.me/Learning_pluses) 👩‍💻