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

• C++20 ввел мощную библиотеку std::ranges, которая предоставляет более удобные и выразительные способы работы с последовательностями данных.

• Диапазоны упрощают операции с контейнерами, делая код более читаемым и декларативным.

• Диапазоны позволяют легко комбинировать различные операции (фильтрация, преобразование и т. д.) в одну цепочку.

• Диапазоны используют ленивые вычисления, что может улучшить производительность за счет минимизации ненужных операций.

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
➡️ Умное управление компиляцией в C++

Современные стандарты C++ предоставляют множество возможностей для оптимизации кода на этапе компиляции.

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

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

Умные указатели, представленные в C++11, значительно упростили управление памятью и ресурсами, исключив необходимость явного освобождения ресурсов.

• Однако в некоторых случаях стандартного поведения умных указателей недостаточно. Использование кастомного deleter позволяет расширить функциональность умных указателей для более сложных сценариев.

• Умные указатели с кастомным deleter обеспечивают автоматическое и безопасное освобождение ресурсов, таких как файлы, сокеты или другие системные ресурсы.

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

• Кастомные deleter предоставляют гибкость и позволяют адаптировать умные указатели для специфических сценариев управления ресурсами.

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

👉Узнайте больше на бесплатном вебинаре онлайн-курса «IoT Developer» - «Мониторинг транспорта в платформе ThingsBoard»: регистрация (https://otus.ru/lessons/iot/?utm_source=telegram&utm_medium=cpm&utm_campaign=iot&utm_term=Learning_pluses_tgin&utm_content=lesson_03-06-2024_usp-engineer_engineer_text_no-headline_aida_long_aibanner_no-banner-hl_black_standart#event-4425)

На занятии рассмотрим решение мониторинга транспорта, познакомимся с реализацией демо проекта на платформе ThingsBoard:
1. Подключение устройств
2. Создание сущностей
3. Разработка цепочек правил
4. Разработка дашборда

🤝Понравится урок — продолжите обучение на курсе по спеццене и даже в рассрочку!

erid: LjN8KRTvd
➡️ Строго типизированные перечисления

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

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

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
🎯 Вперед к улучшенной организации кода с машиной состояний в Qt!

4 июля в 20:00 мск — откройте для себя мир работы с Qt на открытом практическом вебинаре.

На уроке вы освоите:

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

Кому подходит урок:

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

Спикер — ведущий разработчик в одной из крупнейших компаний и опытный преподаватель.

Встречаемся в преддверии старта курса «Разработка прикладного ПО на Qt и ОС «Аврора». Все участники вебинара получат специальную цену на обучение!

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

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

Примеры решений
Пояснения

Выбери своё направление:

1. JavaScript (https://t.me/+u3e0ZNHpk0Q3ODky)
2. Python (https://t.me/+LEcffdCKfw5kYzEy)
3. Java (https://t.me/+K-iYOyU1LnMzYzgy)
4. C# (https://t.me/+4Oz6eoh2o6JmYTAy)
5. C/C++ (https://t.me/+nwY8O9YSx8gwNmMy)
6. Golang (https://t.me/+rC7mEvIcae4wYWQ6)
7. PHP (https://t.me/+Gzwh7btG30pkYzZi)
8. Kotlin (https://t.me/+XewhD58pWzA2NWRi)
9. Swift (https://t.me/+jRimEXd1H2JjZmJi)
➡️ Упрощение работы с асинхронными задачами с помощью C++20 coroutines

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

• Корутина simpleCoroutine: Функция simpleCoroutine является корутиной, что обозначается использованием co_return для завершения ее выполнения. Она выводит сообщение на экран и завершает свою работу.

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
➡️ Ассоциативность оператора массива

• A[8] - это то же самое, что и *(A + 8). Так как операция сложения ассоциативна, она может быть переписана как *(8 + A), что синонимично ..... 8[A]

Никто не говорил, что это должно быть обязательно полезно

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
➡️ Унарный оператор +

• Мало кто знает о возможностях унарного оператора + в C++. Он может использоваться для:

Перевода Enumeration в integer:

+AnEnumeratorValue

• Это делает значение перечислителя типом integer, что полезно при перегрузке операторов для перечислений.

Получения значения переменной:

Унарный + позволяет использовать классы со встроенными статическими инициализаторами без внешнего объявления, создавая временный класс, не зависящий от типа.

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

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
➡️ Злой друг программиста: переопределение ключевых слов

• Переопределение ключевых слов — плохая практика программирования, но это возможно через препроцессор. Это может вводить баги, например, #define true false или #define else.

#define int float
#define float char

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

#define public private
#include "mylibrary.h"
#undef private

• Это позволяет управлять доступом к библиотеке без её изменения, но требует осторожности.

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

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

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

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

• Размещающий new - это альтернативный синтаксис для оператора new, который размещает объект в уже выделенной памяти. Он используется для настройки vtable и вызова конструктора.

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

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
➡️ Квалификаторы ссылки в методах

• C++11 позволяет перегружать методы с использованием квалификатора ссылки, который находится в той же позиции, что и cv-квалификаторы (const и volatile квалификаторы).

• Это влияет на то, какой метод будет вызван для объекта, в зависимости от типа this, – является ли он lvalue или же rvalue.

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

C++ Learning (https://t.me/Learning_pluses) 👩‍💻
🚀Успейте за ростом рынка IoT!

👉Узнайте больше об internet of things на бесплатном вебинаре онлайн-курса «IoT Developer» - «Учет энергоресурсов в платформе ThingsBoard»: регистрация (https://meetup.otus.ru/iot-lesson-17-07-2024/?utm_source=telegram&utm_medium=cpm&utm_campaign=iot&utm_term=Learning_pluses_tgin&utm_content=lesson_17-07-2024_usp-engineer_engineer_text_no-headline_aida_long_aibanner_no-banner-hl_black_standart)

На занятии рассмотрим решение учета энергоресурсов (вода, газ, э/э, тепло), познакомимся с реализацией демо проекта на платформе ThingsBoard:
1. Подключение устройств
2. Создание сущностей
3. Разработка цепочек правил
4. Разработка дашборда

🤝Понравится урок — продолжите обучение на курсе по спеццене и даже в рассрочку!

erid: LjN8KXW8x