en
Feedback
C++_BE1

C++_BE1

Open in Telegram

Канал по C/C++, полезный и интересный контент для всех уровней. По вопросам сотрудничества @cyberJohnny

Show more
406
Subscribers
No data24 hours
-27 days
No data30 days
Posts Archive
➡️ Оператор decltype для создания зависимых типов в C++ В C++ оператор decltype позволяет определить тип переменной на основе
➡️ Оператор decltype для создания зависимых типов в C++ В C++ оператор decltype позволяет определить тип переменной на основе типа другого выражения. Это особенно полезно в шаблонном программировании для создания зависимых типов, когда точный тип заранее неизвестен. • Оператор decltype определяет тип sum на основе типа элементов, возвращаемых итератором контейнера. Это позволяет избежать жесткого кодирования типов и делает код более гибким. • Использование decltype в шаблонных функциях позволяет писать более универсальный код, который корректно работает с различными типами контейнеров. C++ Learning (https://t.me/Learning_pluses) 👩‍💻

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

➡️ Обнаружение утечек памяти с использованием нестандартного оператора new в C++ В C++ утечки памяти могут стать серьезной пр
➡️ Обнаружение утечек памяти с использованием нестандартного оператора new в C++ В C++ утечки памяти могут стать серьезной проблемой, особенно в больших проектах. Один из способов обнаружения утечек памяти — переопределение оператора new, чтобы отслеживать выделение и освобождение памяти. • Мы переопределяем оператор new, чтобы отслеживать все выделения памяти, сохраняя указатели и размеры выделенных блоков в std::map. • Переопределение оператора delete позволяет отслеживать освобождение памяти. Когда память освобождается, соответствующая запись удаляется из allocations. • В конце программы проверяется, остались ли неосвобожденные участки памяти, что позволяет обнаружить утечки. C++ Learning (https://t.me/Learning_pluses) 👩‍💻

«Range-based for»: что интересного лежит на поверхности https://habr.com/ru/articles/835130/

➡️ Управление памятью с использованием std::unique_ptr и пользовательских удалителей Использование std::unique_ptr с пользова
➡️ Управление памятью с использованием std::unique_ptr и пользовательских удалителей Использование std::unique_ptr с пользовательскими удалителями позволяет автоматически управлять жизненным циклом объектов и безопасно освобождать ресурсы. • Это может быть полезно для управления ресурсами, которые требуют специальной логики освобождения, таких как дескрипторы файлов или сетевые соединения. C++ Learning (https://t.me/Learning_pluses) 👩‍💻

➡️ Использование RAII для Управления Ресурсами в C++ RAII (Resource Acquisition Is Initialization) — это идиома в C++, котора
➡️ Использование RAII для Управления Ресурсами в C++ RAII (Resource Acquisition Is Initialization) — это идиома в C++, которая обеспечивает автоматическое управление ресурсами. Она гарантирует, что ресурсы будут освобождены, когда объект, владеющий ими, выходит из области видимости. Класс FileWrapper: • Конструктор открывает файл и выбрасывает исключение, если файл не может быть открыт. • Деструктор гарантирует, что файл будет закрыт при выходе объекта из области видимости, даже если произошло исключение. Метод write: • Проверяет, открыт ли файл, и записывает сообщение в файл, если файл открыт. Использование в main: • Объект FileWrapper создается в блоке try, и файл автоматически закрывается, когда объект выходит из области видимости. • Исключения обрабатываются в блоке catch, выводя сообщение об ошибке. C++ Learning (https://t.me/Learning_pluses) 👩‍💻

Реализуем эффективный тупль с помощью C++26 https://habr.com/ru/articles/835176/

➡️ Использование алиасов для длинных типов Это позволяет значительно упростить код, сделать его более читаемым и легким для п
➡️ Использование алиасов для длинных типов Это позволяет значительно упростить код, сделать его более читаемым и легким для поддержки. • Например: typedef std::vector StrVector; C++ Learning (https://t.me/Learning_pluses) 👩‍💻

➡️ Магия byte Не многие знаю что существует тип переменной byte. Число этого типа может быть в диапазоне от 0 до 255. 👀 А те
➡️ Магия byte Не многие знаю что существует тип переменной byte. Число этого типа может быть в диапазоне от 0 до 255. 👀 А теперь посмотрите насколько это удобно использовать для хранения значений аналоговых входов Просто идеально… Главное в минус не загоняйте число) 🗣 А, и занимает это чудо в 2 раза меньше памяти. За такое вас по головке поглядят. 👩‍💻

➡️ Магия счётчиков Думаю каждый встречался с циклами. Так вот. Там есть интересная особенность — нужно объявлять счетчик. Это
➡️ Магия счётчиков Думаю каждый встречался с циклами. Так вот. Там есть интересная особенность — нужно объявлять счетчик. Это дико бесит начинающих программистов, так что предлагаю такую конструкцию: int i = 0; for(i=0; i < n; i++) { //учимся считать } • Заменять на такую: for(int i = 0; i < n; i++) { //учимся считать } • Это удобнее и красивее 👩‍💻

➡️ Infinity Loop У некоторых людей есть боязнь использования бесконечных/полубесконечных циклов (это связано с тем, что они н
➡️ Infinity Loop У некоторых людей есть боязнь использования бесконечных/полубесконечных циклов (это связано с тем, что они не любят неопределенность). • На самом деле это очень полезная вещь, когда нужно «подождать пока что-то не случится» while(digitalRead(button) ≠ LOW) { ; } • Этот код ждет, пока кнопка (пин button) не отпустится. Это очень полезная фишка, которую можно использовать для ожидания какого-либо события. C++ Learning (https://t.me/Learning_pluses) 👩‍💻

➡️ Библиотека str_format и absl::StrFormat() • Это эффективная, типобезопасная и расширяемая библиотека, поддерживающая весь
➡️ Библиотека str_format и absl::StrFormat() • Это эффективная, типобезопасная и расширяемая библиотека, поддерживающая весь синтаксис форматирования printf. Почти все преобразования printf можно легко обновить до absl::StrFormat(). • Библиотека str_format позволяет использовать форматирование printf в C++ с типовой безопасностью и расширяемостью, обеспечивая удобное форматирование строк. 🔗 Ссылочка на доку (https://abseil.io/docs/cpp/guides/format) C++ Learning (https://t.me/Learning_pluses) 👩‍💻

Как поделить не деля или оптимизация деления компиляторам(и) https://habr.com/ru/articles/833470/

🔴 Как прокачать навыки в C++? Приходите на открытом практическом уроке «Условные переменные в С++» от OTUS, где мы разберем:
🔴 Как прокачать навыки в C++? Приходите на открытом практическом уроке «Условные переменные в С++» от OTUS, где мы разберем: — что такое std::condition_variable и какие задачи он решает; — типовые ошибки при его использовании; — что такое spurious wakeup. А также напишем несколько concurrency-примитивов на основе condition_variable. 🙋‍♂️Спикер — ведущий программист с большим международным опытом. ⏰ Встречаемся 11 июня в 20:00 мск в преддверии старта курса «C++ Developer. Professional». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS! ➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Открытый урок. Аллокаторы в C++: Что делать, если менеджер памяти вас разочаровывает? 🤔 C++ известен тем, что позволяет рабо
Открытый урок. Аллокаторы в C++: Что делать, если менеджер памяти вас разочаровывает? 🤔 C++ известен тем, что позволяет работать с памятью напрямую. Здесь вы точно знаете, где и как расположен каждый из ваших объектов, сколько памяти он занимает. Но можете ли вы принимать решение, где и как будет размещен ваш объект? Часто стандартные методы выделения памяти не удовлетворяют узким требованиям конкретной логики. ⚡️Присоединяйтесь к открытому вебинару 8 августа в 20:00 мск! Поговорим, зачем в C++ существуют аллокаторы. ✅Обсудим, что C++ приобрел при введении полиморфных аллокаторов. И рассмотрим конкретный пример увеличения производительности программы с их помощью. ➡️ Зарегистрируйтесь сейчас, чтобы не пропустить бесплатный урок: https://clck.ru/3CGAQE Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

➡️ Преобразование строк • Преобразование строки в целое число или наоборот — это обычное явление в повседневном программирова
➡️ Преобразование строк • Преобразование строки в целое число или наоборот — это обычное явление в повседневном программировании. • В C++ 11 были введены удобные обертки для этой цели. Например, чтобы преобразовать целое число в строку, можно написать следующее: #include int main() { int ival = 112233; std::string str = std::to_string(ival); return 0; } • Чтобы преобразовать строку в целое число, можно написать следующий код: #include int main() { std::string num_str = "112233"; int ival = std::stoi(num_str); long long llval = std::stoll(num_str); return 0; } C++ Learning (https://t.me/Learning_pluses) 👩‍💻

Разгоняем C++ с кастомными аллокаторами https://habr.com/ru/companies/otus/articles/830104/

➡️ Разделяемые блокировки Разделяемые блокировки полезны, когда: • Блокировка удерживается долго. • Несколько читателей могут
➡️ Разделяемые блокировки Разделяемые блокировки полезны, когда: • Блокировка удерживается долго. • Несколько читателей могут одновременно её захватывать. Схема разделяемой блокировки может быть эффективной, если: • Блокировка удерживается длительное время, например, при работе с большим контейнером. Основной вопрос: • Не "пишу ли я в данные", а "как долго блокировка будет удерживаться читателями по сравнению с временем её захвата?" C++ Learning (https://t.me/Learning_pluses) 👩‍💻

4 типовые ловушки в работе со строками в С и С++ и как их избежать https://habr.com/ru/companies/ncloudtech/articles/830918/

➡️ Инициализация и присваивание Между инициализацией и присваиванием есть тонкая разница. • Инициализация означает присвоение
➡️ Инициализация и присваивание Между инициализацией и присваиванием есть тонкая разница. • Инициализация означает присвоение значения переменной в момент её создания, а присваивание относится к изменению значения переменной на другое. // Это инициализация. Хорошая практика — // инициализировать переменную сразу при её создании. int i = 0; // Это присваивание, где начальное значение // заменяется новым. i = 10; • В C++11 переменную можно инициализировать несколькими способами: int i = {0}; int i{0}; int i(0); C++ Learning (https://t.me/Learning_pluses) 👩‍💻