➡️ Шаблонный параметр типа
Рассмотрим пример:
Структура CachedStore содержит cache и store одного типа данных. Однако при создании CachedStore нужно дважды указывать тип данных (например, int), что не гарантирует их согласованности. Хотелось бы указывать тип данных единожды, чтобы избежать несоответствия, но если опустить параметр типа для store, компилятор выдаст ошибку:
• Параметры типа могут иметь и свои параметр типа. Это позволяет при инстанцировании передавать шаблонные классы без указания параметров типа шаблона.Рассмотрим пример:
template<typename T>
struct Cache { ... };
template<typename T>
struct NetworkStore { ... };
template<typename T>
struct MemoryStore { ... };
template<typename Store, typename T>
struct CachedStore
{
Store store;
Cache<T> cache;
};
CachedStore<NetworkStore<int>, int> a;
CachedStore<MemoryStore<int>, int> b;
Структура CachedStore содержит cache и store одного типа данных. Однако при создании CachedStore нужно дважды указывать тип данных (например, int), что не гарантирует их согласованности. Хотелось бы указывать тип данных единожды, чтобы избежать несоответствия, но если опустить параметр типа для store, компилятор выдаст ошибку:
// Этот код не компилируется, потому что у NetworkStore и MemoryStore...
// отсутствуют параметры типа
CachedStore<
➡️ Функциональные блоки try
C++ Learning 👩💻
• Функциональные блоки try существуют для ловли исключений выброшенных при выполнении инициализационного списка конструктора.• Блок вокруг списка инициализации нельзя обернуть обычным блоком try-catch, потому что список существует вне тела функции. Чтобы исправить это, C++ позволяет использовать try-catch блок в качестве тела метода.• Довольно странный синтаксис, и он может использоваться не только в конструкторах, но и в определении любых функций.C++ Learning 👩💻
🎯 Готовы открыть для себя мир мобильной разработки на ОС Аврора 5?
16 июля в 20:00 мск присоединяйтесь к нашему открытому уроку и узнайте все секреты!
ОС Аврора 5 — это передовая российская мобильная операционная система, готовая к использованию в самых амбициозных проектах. Хотите узнать, как её покорить? Тогда этот вебинар для вас!
На занятии мы познакомимся с ключевыми особенностями ОС Аврора 5 и погрузимся в её уникальную среду разработки приложений — Аврора IDE. Ознакомимся со структурой и конфигурацией приложений на этой платформе.
Вы увидите наглядную демонстрацию приложения, которое отправляет уведомления в графическую подсистему Lipstick.
Встречаемся в преддверии старта курса «Разработка прикладного ПО на Qt и ОС «Аврора».
Все участники вебинара получат специальную цену на обучение!
➡️ Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок: https://clck.ru/3BpWFY
16 июля в 20:00 мск присоединяйтесь к нашему открытому уроку и узнайте все секреты!
ОС Аврора 5 — это передовая российская мобильная операционная система, готовая к использованию в самых амбициозных проектах. Хотите узнать, как её покорить? Тогда этот вебинар для вас!
На занятии мы познакомимся с ключевыми особенностями ОС Аврора 5 и погрузимся в её уникальную среду разработки приложений — Аврора IDE. Ознакомимся со структурой и конфигурацией приложений на этой платформе.
Вы увидите наглядную демонстрацию приложения, которое отправляет уведомления в графическую подсистему Lipstick.
Встречаемся в преддверии старта курса «Разработка прикладного ПО на Qt и ОС «Аврора».
Все участники вебинара получат специальную цену на обучение!
➡️ Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок: https://clck.ru/3BpWFY
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576➡️ WebKit
Так или иначе, почти все разработчики на разных этапах сталкиваются с необходимостью отображать web – элементы. Чтобы всё выглядело красиво и в коде, и в конечном отображении, а выполнение этой задачи не отнимало слишком много времени и сил, существует библиотека WebKit.
🔗 Ссылочка на доку
C++ Learning 👩💻
Так или иначе, почти все разработчики на разных этапах сталкиваются с необходимостью отображать web – элементы. Чтобы всё выглядело красиво и в коде, и в конечном отображении, а выполнение этой задачи не отнимало слишком много времени и сил, существует библиотека WebKit.
• Некоторые программисты называют WebKit «чёрным ящиком», органично перерабатывающим html, css и JavaScript в полноценные веб-страницы.🔗 Ссылочка на доку
C++ Learning 👩💻
➡️ Awesomium
Awesomium — это библиотека для интеграции браузера (на базе Chromium) в своё приложение. Библиотека имеет 2 режима работы: Offscreen и Windowed.
🔗 Ссылочка на доку
C++ Learning 👩💻
Awesomium — это библиотека для интеграции браузера (на базе Chromium) в своё приложение. Библиотека имеет 2 режима работы: Offscreen и Windowed.
• В режиме Offscreen отрисовка и работа скриптов на экране не отображается.• В режиме Windowed средствами библиотеки эффективно выполняется отрисовка в «окне приписки» и обработка активности мыши и клавиатуры.• Awesomium активно применяется в десятках разных приложений. Описаны случаи интеграции этой библиотеки в 3D игры.🔗 Ссылочка на доку
C++ Learning 👩💻
☝Для программистов важно понимать устройство и организацию оперативной памяти — от этого зависит надёжность и производительность кода. Особенно критично это для тех, кто пишет на C, где есть уйма возможностей для ручного управления памятью: malloc, jemalloc, tcmalloc, mimalloc...
👉Узнайте больше на бесплатном авторском вебинаре Дмитрия Кириллова «Написание расширения PostgreSQL на языке С»: регистрация
На уроке узнаете:
- как устроена оперативная память на уровне операционной системы
- что происходит при динамическом распределении памяти (и зачем нужны специализированные аллокаторы)
- как грамотно управлять памятью, чтобы повысить качество своего кода
🤝Понравится вебинар — продолжите обучение на онлайн-курсе «Программист С» по специальной цене!
erid: LjN8JtvKc
👉Узнайте больше на бесплатном авторском вебинаре Дмитрия Кириллова «Написание расширения PostgreSQL на языке С»: регистрация
На уроке узнаете:
- как устроена оперативная память на уровне операционной системы
- что происходит при динамическом распределении памяти (и зачем нужны специализированные аллокаторы)
- как грамотно управлять памятью, чтобы повысить качество своего кода
🤝Понравится вебинар — продолжите обучение на онлайн-курсе «Программист С» по специальной цене!
erid: LjN8JtvKc
➡️ V8
C++ Learning 👩💻
• Если вам нужен удобный инструмент для работы с JavaScript, V8 отлично подойдёт.• V8 использует классы на C++ в namespace V8, что позволяет работать с JavaScript через привычную оболочку C++. Объекты C++ и V8 взаимодействуют через v8::Handle (template-классы).• Установка V8 занимает немного времени и очень полезна для работы с JavaScript. Кроме того, знания о библиотеках, связывающих C++ и JavaScript, часто спрашивают на собеседованиях, поэтому стоит с ними познакомиться даже если вы не планируете работать с JavaScript.C++ Learning 👩💻
➡️ Check
Библиотека Check предназначена для модульного тестирования всех возможностей программ, написанных на языке С.
🔗 Ссылочка на доку
C++ Learning 👩💻
Библиотека Check предназначена для модульного тестирования всех возможностей программ, написанных на языке С.
• Существенным плюсом использования Check’а служит возможность запуска тестов в отдельных процессах для более точной диагностики причин возникновения ошибок, снижения скорости и т.п• Для модульного тестирования на языке С++ используется Google C++ Testing Framework (Google Test).🔗 Ссылочка на доку
C++ Learning 👩💻
➡️ ZBar
Библиотека ZBar предназначена для распознавания штрихкодов из изображений.
🔗 Ссылочка на доку
C++ Learning 👩💻
Библиотека ZBar предназначена для распознавания штрихкодов из изображений.
• ZBar имеет предельно простую и логичную документацию без «тёмной магии» и необъяснимых функций.• Работать с ней легко и удобно. Можно использовать из программных интерфейсов С, С++, Питона и других языков программирования.🔗 Ссылочка на доку
C++ Learning 👩💻
➡️ Active Template Library
ATL (Active Template Library) — это библиотека шаблонов C++ с открытым исходным кодом, созданная для упрощения программирования объектов COM.
🔗 Ссылочка на доку
C++ Learning 👩💻
ATL (Active Template Library) — это библиотека шаблонов C++ с открытым исходным кодом, созданная для упрощения программирования объектов COM.
• Поддерживает функции COM, такие как стандартные реализации, двойные интерфейсы и ActiveX-контролы.• Разработана Microsoft как замена MFC для COM-объектов, используя шаблон CRTP.🔗 Ссылочка на доку
C++ Learning 👩💻
➡️ FloatX
FloatX — это библиотека для эмуляции чисел с плавающей запятой низкой точности. Ее можно использовать в программах на C++, Python и Fortran.
🔗 Ссылочка на доку
C++ Learning 👩💻
FloatX — это библиотека для эмуляции чисел с плавающей запятой низкой точности. Ее можно использовать в программах на C++, Python и Fortran.
• Заголовочная библиотека: расширяет типы с плавающей запятой за пределы одинарной и двойной точности.• Шаблонные типы: позволяют задать количество бит для экспоненты и других важных частей чисел с плавающей запятой.• Разработана на C++: основана на библиотеке FlexFloat (разработана на C), использует обертки на C++.• Расширенные функциональности: предоставляет надмножество возможностей FlexFloat.• Ограничения: не реализует произвольные типы чисел с плавающей запятой.🔗 Ссылочка на доку
C++ Learning 👩💻
🦾Хардкорный тест по языку С🦾
📌Пройдите тест из 20 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «Программист С» от OTUS. Сможете сдать - пройдете на курс по спеццене!
⏰ Время прохождения теста ограничено 30 минут
👉ПРОЙТИ ТЕСТ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
📌Пройдите тест из 20 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «Программист С» от OTUS. Сможете сдать - пройдете на курс по спеццене!
⏰ Время прохождения теста ограничено 30 минут
👉ПРОЙТИ ТЕСТ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
➡️ mlpack
mlpack — надёжная и быстрая библиотека для машинного обучения на C++, работающая через заголовочные файлы.
🔗 Ссылочка на доку
C++ Learning 👩💻
mlpack — надёжная и быстрая библиотека для машинного обучения на C++, работающая через заголовочные файлы.
• Поддерживает привязки к другим языкам: Go, Julia, R и Python.• Помогает реализовывать модели и функции машинного обучения, как "швейцарский нож" для исследователей.• Обладает надёжными интерфейсами и лёгким весом, что делает её идеальной для развертывания.• Подходит для интерактивного прототипирования через C++ блокноты.🔗 Ссылочка на доку
C++ Learning 👩💻
👍Пройдите тест по IoT👍
📌Пройдите тест из 10 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «IoT Developer» от OTUS. Сможете сдать - пройдете на курс со скидкой!
⏰ Время прохождения теста ограничено 10 минут
👉ПРОЙТИ ТЕСТ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
📌Пройдите тест из 10 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «IoT Developer» от OTUS. Сможете сдать - пройдете на курс со скидкой!
⏰ Время прохождения теста ограничено 10 минут
👉ПРОЙТИ ТЕСТ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
➡️ Эффективное использование std::tuple для группировки возвращаемых значений в C++
Использование
Использование
C++ Learning 👩💻
Использование
std::tuple позволяет легко возвращать и обрабатывать несколько значений из функции без необходимости создания дополнительных структур.Использование
std::tuple позволяет улучшить читаемость и упростить код, когда нужно возвращать несколько значений из функции.C++ Learning 👩💻
➡️ Оптимизация работы с большими массивами: Использование std::vector и перемещения
В C++ работа с большими массивами может быть неэффективной, если каждый раз создавать копии данных.
C++ Learning 👩💻
В C++ работа с большими массивами может быть неэффективной, если каждый раз создавать копии данных.
• Вместо этого можно воспользоваться возможностями стандартной библиотеки, такими как std::vector и перемещение (move semantics), чтобы улучшить производительность.• std::vector — это динамический массив с возможностью автоматического управления памятью.• Перемещение (std::move) позволяет передать владение данными без копирования, что существенно снижает накладные расходы при работе с большими объемами данных.• После перемещения myVector остаётся в валидном, но неопределённом состоянии. В данном случае его размер будет равен 0.C++ Learning 👩💻
➡️ Индексирование массива (Оператор подиндексации) является коммутативным
Индексирование массива — обычная операция для всех программистов и в целом одинаково во всех языках программирования. Однако в C++ вы можете поменять местами массив и индекс, получая такой код:
C++ Learning 👩💻
Индексирование массива — обычная операция для всех программистов и в целом одинаково во всех языках программирования. Однако в C++ вы можете поменять местами массив и индекс, получая такой код:
int arr[] = {1, 2, 3, 4};
std::cout << arr[1] << std::endl;
std::cout << 1[arr] << std::endl;
for (int i = 0; i < 4; ++i)
std::cout << i[arr] << std::endl;• Это происходит потому, что выражение array[index] эквивалентно *(array + index), что в свою очередь то же самое, что *(index + array), что переводится обратно в index[array].C++ Learning 👩💻