➡️ Check
Библиотека Check предназначена для модульного тестирования всех возможностей программ, написанных на языке С.
• Существенным плюсом использования Check’а служит возможность запуска тестов в отдельных процессах для более точной диагностики причин возникновения ошибок, снижения скорости и т.п
• Для модульного тестирования на языке С++ используется Google C++ Testing Framework (Google Test).
🔗 Ссылочка на доку (https://github.com/libcheck/check)
C++ Learning (https://t.me/Learning_pluses) 👩💻
Библиотека 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%, действует до конца июля.
Пройди тест из 20 вопросов и проверь, насколько хорошо nы знаешь язык C++ и готов освоить QT и ОС Аврора .
Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработка прикладного ПО на Qt и ОС Аврора" от OTUS.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruPlease open Telegram to view this post
VIEW IN TELEGRAM
➡️ ZBar
Библиотека ZBar предназначена для распознавания штрихкодов из изображений.
• ZBar имеет предельно простую и логичную документацию без «тёмной магии» и необъяснимых функций.
• Работать с ней легко и удобно. Можно использовать из программных интерфейсов С, С++, Питона и других языков программирования.
🔗 Ссылочка на доку (https://github.com/mchehab/zbar)
C++ Learning (https://t.me/Learning_pluses) 👩💻
Библиотека ZBar предназначена для распознавания штрихкодов из изображений.
• ZBar имеет предельно простую и логичную документацию без «тёмной магии» и необъяснимых функций.
• Работать с ней легко и удобно. Можно использовать из программных интерфейсов С, С++, Питона и других языков программирования.
🔗 Ссылочка на доку (https://github.com/mchehab/zbar)
C++ Learning (https://t.me/Learning_pluses) 👩💻
Возможности С++: от стандартных алгоритмов до диапазонов (Ranges)
Смотреть статью ()
https://habr.com/ru/companies/simbirsoft/articles/828878/
Смотреть статью ()
https://habr.com/ru/companies/simbirsoft/articles/828878/
Хабр
Возможности С++: от стандартных алгоритмов до диапазонов (Ranges)
Привет, Хабр! Меня зовут Николай, я разработчик С++ в SimbirSoft. В предыдущей статье мы с вами рассмотрели применение стандартных алгоритмов в повседневном коде и их преимущества над...
➡️ 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) 👩💻
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
📌Пройдите тест из 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) 👩💻
FloatX — это библиотека для эмуляции чисел с плавающей запятой низкой точности. Ее можно использовать в программах на C++, Python и Fortran.
• Заголовочная библиотека: расширяет типы с плавающей запятой за пределы одинарной и двойной точности.
• Шаблонные типы: позволяют задать количество бит для экспоненты и других важных частей чисел с плавающей запятой.
• Разработана на C++: основана на библиотеке FlexFloat (разработана на C), использует обертки на C++.
• Расширенные функциональности: предоставляет надмножество возможностей FlexFloat.
• Ограничения: не реализует произвольные типы чисел с плавающей запятой.
🔗 Ссылочка на доку (https://github.com/oprecomp/FloatX)
C++ Learning (https://t.me/Learning_pluses) 👩💻
📌Пройдите тест из 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) 👩💻
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.
И многое другое!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruPlease 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++ работа с большими массивами может быть неэффективной, если каждый раз создавать копии данных.
• Вместо этого можно воспользоваться возможностями стандартной библиотеки, такими как std::vector и перемещение (move semantics), чтобы улучшить производительность.
• std::vector — это динамический массив с возможностью автоматического управления памятью.
• Перемещение (std::move) позволяет передать владение данными без копирования, что существенно снижает накладные расходы при работе с большими объемами данных.
• После перемещения myVector остаётся в валидном, но неопределённом состоянии. В данном случае его размер будет равен 0.
C++ Learning (https://t.me/Learning_pluses) 👩💻
➡️ Индексирование массива (Оператор подиндексации) является коммутативным
Индексирование массива — обычная операция для всех программистов и в целом одинаково во всех языках программирования. Однако в C++ вы можете поменять местами массив и индекс, получая такой код:
int arr[] = {1, 2, 3, 4};
std::cout
Индексирование массива — обычная операция для всех программистов и в целом одинаково во всех языках программирования. Однако в 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) 👩💻
Оператор new в классе Widget должен работать так:
• Установить глобальный обработчик для new через set_new_handler, указав функцию из класса Widget.
• Вызвать глобальный operator new. Если он не справится, сработает обработчик Widget.
• Если и это не поможет, глобальный new выбросит исключение. В этом случае обработчик Widget должен восстановить исходный обработчик и передать исключение дальше.
• Если память выделена успешно, вернуть указатель и восстановить предыдущий обработчик new.
C++ Learning (https://t.me/Learning_pluses) 👩💻
Тысяча и одна библиотека С++
https://habr.com/ru/articles/831754/
https://habr.com/ru/articles/831754/
Хабр
Тысяча и одна библиотека С++
В жизни каждого программиста С++ рано или поздно возникает задача, которую кто-либо уже решил. Однако найти это решение бывает очень непросто в силу разных причин: оно недостаточно разрекламировано,...
➡️ Использование set_new_handler
• Обработчик оператора new циклически ищет память.
• Можно зарезервировать и освободить память при первом вызове.
• Можно установить или удалить другой обработчик.
• Нулевой указатель через set_new_handler вызывает исключение сразу.
• В обработчике new можно вызвать исключение bad_alloc или завершить программу с помощью abort или exit.
• Для конкретного типа объектов можно задать свои set_new_handler и operator new.
C++ Learning (https://t.me/Learning_pluses) 👩💻
• Обработчик оператора 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) 👩💻
Между инициализацией и присваиванием есть тонкая разница.
• Инициализация означает присвоение значения переменной в момент её создания, а присваивание относится к изменению значения переменной на другое.
// Это инициализация. Хорошая практика —
// инициализировать переменную сразу при её создании.
int i = 0;
// Это присваивание, где начальное значение
// заменяется новым.
i = 10;
• В C++11 переменную можно инициализировать несколькими способами:
int i = {0};
int i{0};
int i(0);
C++ Learning (https://t.me/Learning_pluses) 👩💻
4 типовые ловушки в работе со строками в С и С++ и как их избежать
https://habr.com/ru/companies/ncloudtech/articles/830918/
https://habr.com/ru/companies/ncloudtech/articles/830918/
Хабр
4 типовые ловушки в работе со строками в С и С++ и как их избежать
Некорректное использование строк может стать настоящей ахиллесовой пятой защиты программы. Поэтому так важно применять актуальные подходы к их обработке. Под катом разберём несколько паттернов ошибок...
➡️ Разделяемые блокировки
Разделяемые блокировки полезны, когда:
• Блокировка удерживается долго.
• Несколько читателей могут одновременно её захватывать.
Схема разделяемой блокировки может быть эффективной, если:
• Блокировка удерживается длительное время, например, при работе с большим контейнером.
Основной вопрос:
• Не "пишу ли я в данные", а "как долго блокировка будет удерживаться читателями по сравнению с временем её захвата?"
C++ Learning (https://t.me/Learning_pluses) 👩💻
Разделяемые блокировки полезны, когда:
• Блокировка удерживается долго.
• Несколько читателей могут одновременно её захватывать.
Схема разделяемой блокировки может быть эффективной, если:
• Блокировка удерживается длительное время, например, при работе с большим контейнером.
Основной вопрос:
• Не "пишу ли я в данные", а "как долго блокировка будет удерживаться читателями по сравнению с временем её захвата?"
C++ Learning (https://t.me/Learning_pluses) 👩💻
Разгоняем C++ с кастомными аллокаторами
https://habr.com/ru/companies/otus/articles/830104/
https://habr.com/ru/companies/otus/articles/830104/
Хабр
Разгоняем C++ с кастомными аллокаторами
Привет, Хабр! Сегодня мы обратим свой взор на производительность в C++, и как ни странно, нашими главными героями станут не библиотеки или сложные алгоритмы, а казалось бы, простые аллокаторы. Но не...