cookie

Sizning foydalanuvchi tajribangizni yaxshilash uchun cookie-lardan foydalanamiz. Barchasini qabul qiling», bosing, cookie-lardan foydalanilishiga rozilik bildirishingiz talab qilinadi.

avatar

C++_BE1

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

Ko'proq ko'rsatish
Reklama postlari
998
Obunachilar
-324 soatlar
-187 kunlar
-51430 kunlar
Post vaqtlarining boʻlagichi

Ma'lumot yuklanmoqda...

Find out who reads your channel

This graph will show you who besides your subscribers reads your channel and learn about other sources of traffic.
Views Sources
Nashrni tahlil qilish
PostlarKo'rishlar
Ulashishlar
Ko'rish dinamikasi
01
➡️ Взламываем многопоточность: atomic_ref в C++ C++20 представил возможность для управления многопоточностью: atomic_ref. • atomic_ref обеспечивает безопасное многопоточное доступ к данным. • Использование атомарных операций позволяет избежать блокировок и улучшить производительность программы. • Использование atomic_ref снижает вероятность ошибок в многопоточном коде. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
3442Loading...
02
➡️ Погружаемся в мир асинхронного программирования: корутины в C++ Корутины — это функции, которые могут приостанавливать своё выполнение и возобновлять его позже, сохраняя своё состояние. Это полезно для написания асинхронного кода, ленивых вычислений и генераторов. • Корутины облегчают написание асинхронного кода без сложных состояний и обратных вызовов. • Корутины позволяют реализовать ленивые вычисления и генераторы данных. • Код, использующий корутины, часто более читаемый и поддерживаемый, так как логика остается последовательной. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
4143Loading...
03
➡️ Модули (Modules) в C++ Модули - это система сборки и организации кода, представленная в C++20. • Они улучшают компиляцию и организацию кода, предоставляя более четкий и эффективный способ управления зависимостями. • Модули заменяют использование препроцессорных директив #include, улучшая время компиляции и предотвращая проблемы с зависимостями и макросами. • Модули значительно сокращают время компиляции по сравнению с традиционными заголовочными файлами, так как они компилируются только один раз. • Модули предотвращают проблемы, связанные с макросами и конфликтами имен, поскольку они предоставляют четкие границы и изолированные области видимости. • Модули упрощают управление зависимостями и организацию кода, что делает проекты более поддерживаемыми и масштабируемыми. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
3883Loading...
04
⌛ Что будет выведено при выполнении кода? C++ Learning (https://t.me/Learning_pluses) 👩‍💻
4422Loading...
05
➡️ Концепты (Concepts) в C++ Концепты - это новая возможность в C++20, которая позволяет задавать ограничения на шаблонные параметры. Это позволяет писать более безопасный и читаемый код, поскольку компилятор проверяет соответствие типов требованиям концептов на этапе компиляции. • template concept Arithmetic = std::is_arithmetic_v; определяет концепт Arithmetic, который ограничивает типы, для которых значение std::is_arithmetic_v истинно (т.е. типы, которые являются арифметическими). • template T add(const T& a, const T& b) определяет шаблонную функцию add, которая будет компилироваться только для типов, удовлетворяющих концепту Arithmetic. Использование функции add: • Примеры с целыми числами и числами с плавающей запятой успешно вызывают функцию add. • Пример со строками (закомментированный) вызовет ошибку компиляции, так как std::string не является арифметическим типом. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
4173Loading...
06
➡️ Делегирование конструкторов • В старом C++ вам нужно создавать функцию-член для инициализации и вызывать ее из всех конструкторов для достижения универсально инициализации. • Но начиная с C++11 конструкторы теперь могут вызывать другие конструкторы из того же класса с помощью списка инициализаторов. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
5241Loading...
07
‍➡️ Удаленные и дефолтные функции struct demo { demo() = default; }; demo d; • У вас вполне закономерно может возникнуть вопрос, зачем вам писать 8+ букв (т.е. = default;), когда можно просто использовать {}, т.е. пустой конструктор? Никто вас не останавливает. Но подумай о конструкторе копирования, операторе копирования присваиванием, и т.д. • Пустой конструктор копирования, например, не то же самое, что конструктор копирования по умолчанию (который будет выполнять почленную копию всех членов). • Вы можете ограничить определенную операцию или способ инстанцирования объекта, просто удалив соответствующий метод, как показано ниже: class demo { int m_x; public: demo(int x) : m_x(x){}; demo(const demo &) = delete; demo &operator=(const demo &) = delete; }; demo obj1{123}; demo obj2 = obj1; // ОШИБКА -- вызов удаленного конструктора копирования obj2 = obj1; // ОШИБКА -- оператор = удален 🗣️ В старом С++ вы должны были сделать его приватным. Но теперь в вашем распоряжении есть директива компилятора delete. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
3543Loading...
08
Media files
1860Loading...
09
Yandex DEVent PRO (https://events.yandex.ru/events/deventpro_spb/?utm_source=telegram&utm_medium=cpp&utm_campaign=mg_posev_tg_devent_pro_spb&utm_content=learning_pluses_03_06_24&erid=2VSb5yu4bRJ) в Питере Это серия офлайн-митапов для опытных бэкендеров от команды Поиска и Рекламных технологий. Здесь можно в закрытом формате познакомиться с лидами из других команд, обменяться опытом и пообщаться. В этот раз митап пройдёт в Санкт-Петербурге 19 июня (https://events.yandex.ru/events/deventpro_spb/?utm_source=telegram&utm_medium=cpp&utm_campaign=mg_posev_tg_devent_pro_spb&utm_content=learning_pluses_03_06_24&erid=2VSb5yu4bRJ): будет настоящее раздолье для нетворкинга, а ещё обсуждение горячих и спорных тем по разработке в формате speed dating. Спикеры и доклады: 🟡Константин Гудков, руководитель группы разработки Feature store. Расскажет о процессе создания Feature Store — интерфейса для работы с данными, который используется ML-моделями в Рекламе 🟡Сергей Скворцов, руководитель службы поискового райнтайма. Обсудит, как анализировать производительность нативных программ под Linux под нагрузкой с помощью Perforator 🟡Николай Савушкин, руководитель службы рекомендательных технологий. Расскажет о Real-time processing в рекомендательных системах Яндекса А после докладов вас ждёт афтерпати: кальяны, аэрохоккей и прочие активности! Узнать подробную информацию и зарегистрироваться можно по ссылке (https://events.yandex.ru/events/deventpro_spb/?utm_source=telegram&utm_medium=cpp&utm_campaign=mg_posev_tg_devent_pro_spb&utm_content=learning_pluses_03_06_24&erid=2VSb5yu4bRJ). Ждём вас! Реклама. ООО "Яндекс", ИНН 7736207543.
1962Loading...
10
➡️ Циклы for по диапазону • Синтаксический сахар для перебора элементов контейнера. std::array a {1, 2, 3, 4, 5}; for (int& x : a) x *= 2; // a == { 2, 4, 6, 8, 10 } • Обратите внимание на разницу при использовании int в противовес int&: std::array a {1, 2, 3, 4, 5}; for (int x : a) x *= 2; // a == { 1, 2, 3, 4, 5 } C++ Learning (https://t.me/Learning_pluses) 👩‍💻
4543Loading...
11
Объявляю ошибку вида if (x = 42) вымирающей и заношу её в Красную книгу C и C++ багов https://pvs-studio.ru/ru/blog/posts/cpp/1127/
4441Loading...
12
➡️ auto & decltype • auto-типизированные переменные выводятся компилятором на основе типа их инициализатора. • Чрезвычайно полезно с точки зрения удобочитаемости, особенно для сложных типов: // std::vector::const_iterator cit = v.cbegin(); auto cit = v.cbegin(); // альтернатива // std::shared_ptr demo_ptr(new vector(0); auto demo_ptr = make_shared(0); // альтернатива • Функции также могут выводить тип возвращаемого значения с помощью auto. В C++11 тип возвращаемого значения должен быть указан либо явно, либо с помощью decltype, например: template auto add(X x, Y y) -> decltype(x + y) { return x + y; } add(1, 2); // == 3 add(1, 2.0); // == 3.0 add(1.5, 1.5); // == 3.0 • Приведенная выше форма определения возвращаемого типа называется trailing return type, т.е. -> return-type. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
2072Loading...
13
➡️ Пользовательские литералы • По большей части это будут какие-нибудь реальные единицы, такие как kb, mb, км, см, рубли, доллары, евро и т.д. Пользовательские литералы позволяют вам не определять функции, для выполнения преобразования единиц измерения во время выполнения, а работать с ним как с другими примитивными типами. • Очень удобно для единиц и измерения. • Благодаря добавлению constexpr вы можете добиться нулевого влияния на производительность во время выполнения. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
4403Loading...
14
➡️ Что такое mutable? Ключевое слово mutable позволяет изменять члены объекта, даже если этот объект является константным. Наиболее часто это используется в случаях, когда нужно изменить состояние объекта для внутреннего использования, например, для кэширования или статистики. 🔽Преимущества использования mutable • Контроль над состоянием: Позволяет изменять внутреннее состояние объекта, даже если остальные части объекта не изменяются. • Кэширование и оптимизация: Полезно для кэширования результатов вычислений или статистики, что может повысить производительность программы. • Удобство: Упрощает код, позволяя изменять отдельные члены объекта, не нарушая его неизменяемость в других аспектах. Вывод 🔵 Рассмотрим пример, где mutable используется для ведения внутреннего счетчика доступа к методу объекта, который является const. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
3743Loading...
15
#Вопросы_с_собеседования Какие отличия у std::array и std::vector? std::array - это обёртка вокруг обычного массива, фиксированного размера, а std::vector - это динамически расширяемый массив. std::array хранит свои данные в стековой памяти, а vector выделяет память в куче (динамическая память). У std::array в параметрах шаблона указывается тип хранимых элементов и размер массива. А у std::vector - тип элементов и ещё возможно указать аллокатор, который нужно использовать при выделении памяти (с помощью new). std::array чуть лучше по производительности в случае небольшого массива, чем std::vector, который содержит в себе несколько указателей, которые указывают на выделенный в куче кусок памяти.
4033Loading...
16
#вопросы_с_собеседований Для чего нужен атрибут fallthrough? Атрибут [[fallthrough]] используется для явного указания того, что в конструкции switch нужно пропустить break в конце case и перейти к выполнению следующего case. По умолчанию в С++17 и новее переход между case без break приводит к ошибке компиляции и чтобы сохранить старое поведение и разрешить переход, нужно добавить [[fallthrough]]. Это улучшает читаемость кода, явно указывая на отсутствие break и помогает избежать случайного отсутствия break, когда разработчик забыл его добавить. [[fallthrough]] также полезен при рефакторинге старого кода с switch в современный стандарт С++.
3942Loading...
17
Media files
4460Loading...
18
Ровно год назад автор каналa Торговый Инсайдер (https://t.me/+jtdMrubMBy0xM2E6) дал 4 монеты своим подписчикам и вложил вместе с ними по 100$ в каждую, а теперь пришло время подводить итоги. Apex 100$ - 11.100$ CDX 100$ - 10.000$ PIXEL 100$ - 3828$ VEIL 100$ - 7.460$ И это всего лишь 4 монеты из огромного количества, которые мы разбирали на канале «Торговый Инсайдер (https://t.me/+jtdMrubMBy0xM2E6)» 9 апреля мы выложим новый список монет на 2024 год. Поспеши узнать и зайти закупиться пока монеты не улетели в космос! P.s кто не успел, тот опоздал извиняйте 🤷‍♂️👇🏼 https://t.me/+jtdMrubMBy0xM2E6
4611Loading...
19
🚀 Начинаете свой путь в разработке на С++? Ждём вас на открытом практическом уроке «Шаблоны в С++ и основы метапрограммирования» от OTUS, где мы разберем: - мощный инструмент создания и настройки типов во время компиляции с помощью шаблонов в C++; - как шаблоны обогащают функциональность языка и улучшают процесс разработки; - ответы на все возникающие вопросы. Спикер Евгений Пальчуковский — разработчик с большим международным опытом в финтехе. ⏰ Встречаемся 28 мая в 20:00 мск в преддверии старта курса «Специализация C++ Developer». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS! ➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: РЕГИСТРАЦИЯ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
4362Loading...
20
📔 Title: Clean Code Principles and Patterns, 2nd Edition: A Software Practitioner’s Handbook #book # #EN 🌐 Lang.: English 🧔 Author: Petri Silén 🕘 Year: 2023 📑 Pages: 489 #️⃣ ISBN: 9798373835732 📝 Description: Это одно из самых полных руководств для разработчиков программного обеспечения, которое поможет Вам писать чистый код каждый день. Автор изложил все свои знания, полученные за годы практики, в этой книге. В книге собраны принципы и паттерны, которые помогут разработчикам, от новичков и юниоров до опытных экспертов, писать более чистый код. Принципы и паттерны, представленные в книге, сопровождаются реалистичными, но понятными примерами, чтобы помочь читателю лучше понять их. Примеры написаны на языках Java, JavaScript/TypeScript и C++. Большинство примеров напрямую применимы и к другим языкам программирования. Читатель должен обладать базовыми знаниями одного из языков объектно-ориентированного программирования, чтобы получить максимальную пользу от этой книги. @cplus_be1
4374Loading...
21
Типы данных в C++
4573Loading...
22
Aubio Aubio — это библиотека с открытым исходным кодом для анализа звука на C++. Она предоставляет широкий набор функций для работы с аудиоданными, включая считывание и запись аудиофайлов, анализ спектра, обнаружение и отслеживание тональности, анализ темпа и ритма, обнаружение начала звука, фильтрация и обработка звука. https://github.com/aubio/aubio #для_продвинутых
4493Loading...
23
🦾 Ты круто кодишь на С++, really? Попробуй пройти тест наш по C++ и проверь подходит ли тебе наш курс Ответишь — пройдешь на продвинутый курс "C++ Developer. Professional" от OTUS по специальной цене + получишь запись мастер-класса от преподавателя курса. 👉 ПРОЙТИ ТЕСТ: https://clck.ru/39xR9R Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
10Loading...
24
libuv libuv — это кросс-платформенная библиотека поддержки с фокусом на асинхронный ввод-вывод. Она была первоначально разработана для использования в Node.js, но также используется в Luvit, Julia, uvloop и других проектах. https://github.com/libuv/libuv #для_продвинутых
4822Loading...
25
Многообразие связных списков https://habr.com/ru/articles/814955/
4374Loading...
26
Ichor Ichor — это библиотека C++ для высокопроизводительной разработки игр и приложений реального времени. Она предоставляет набор инструментов для создания масштабируемых, многопоточных и оптимизированных систем. #для_продвинутых
4733Loading...
27
Veles Veles — это высокопроизводительная библиотека для параллельного программирования на C++, разработанная Яндексом. Она предназначена для упрощения разработки высокопроизводительных приложений, использующих многоядерные процессоры и другие аппаратные ускорители. #для_продвинутых
4396Loading...
28
https://easyoffer.ru/
10Loading...
29
🔥 Это база 434 вопроса с собеседований на C/C++ разработчика. () Фишка в том, что просчитана вероятность с которой вопрос буден задан и есть примеры ответов. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам 😏 https://t.me/+7zoykJmSUGAzYWNi
2702Loading...
Photo unavailableShow in Telegram
➡️ Взламываем многопоточность: atomic_ref в C++ C++20 представил возможность для управления многопоточностью: atomic_ref. • atomic_ref обеспечивает безопасное многопоточное доступ к данным. • Использование атомарных операций позволяет избежать блокировок и улучшить производительность программы. • Использование atomic_ref снижает вероятность ошибок в многопоточном коде. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
Hammasini ko'rsatish...
Photo unavailableShow in Telegram
➡️ Погружаемся в мир асинхронного программирования: корутины в C++ Корутины — это функции, которые могут приостанавливать своё выполнение и возобновлять его позже, сохраняя своё состояние. Это полезно для написания асинхронного кода, ленивых вычислений и генераторов. • Корутины облегчают написание асинхронного кода без сложных состояний и обратных вызовов. • Корутины позволяют реализовать ленивые вычисления и генераторы данных. • Код, использующий корутины, часто более читаемый и поддерживаемый, так как логика остается последовательной. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
Hammasini ko'rsatish...
Photo unavailableShow in Telegram
➡️ Модули (Modules) в C++ Модули - это система сборки и организации кода, представленная в C++20. • Они улучшают компиляцию и организацию кода, предоставляя более четкий и эффективный способ управления зависимостями. • Модули заменяют использование препроцессорных директив #include, улучшая время компиляции и предотвращая проблемы с зависимостями и макросами. • Модули значительно сокращают время компиляции по сравнению с традиционными заголовочными файлами, так как они компилируются только один раз. • Модули предотвращают проблемы, связанные с макросами и конфликтами имен, поскольку они предоставляют четкие границы и изолированные области видимости. • Модули упрощают управление зависимостями и организацию кода, что делает проекты более поддерживаемыми и масштабируемыми. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
Hammasini ko'rsatish...
👍 1
Photo unavailableShow in Telegram
⌛ Что будет выведено при выполнении кода? C++ Learning (https://t.me/Learning_pluses) 👩‍💻
Hammasini ko'rsatish...
Photo unavailableShow in Telegram
➡️ Концепты (Concepts) в C++ Концепты - это новая возможность в C++20, которая позволяет задавать ограничения на шаблонные параметры. Это позволяет писать более безопасный и читаемый код, поскольку компилятор проверяет соответствие типов требованиям концептов на этапе компиляции. • template concept Arithmetic = std::is_arithmetic_v; определяет концепт Arithmetic, который ограничивает типы, для которых значение std::is_arithmetic_v истинно (т.е. типы, которые являются арифметическими). • template T add(const T& a, const T& b) определяет шаблонную функцию add, которая будет компилироваться только для типов, удовлетворяющих концепту Arithmetic. Использование функции add: • Примеры с целыми числами и числами с плавающей запятой успешно вызывают функцию add. • Пример со строками (закомментированный) вызовет ошибку компиляции, так как std::string не является арифметическим типом. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
Hammasini ko'rsatish...
Photo unavailableShow in Telegram
➡️ Делегирование конструкторов • В старом C++ вам нужно создавать функцию-член для инициализации и вызывать ее из всех конструкторов для достижения универсально инициализации. • Но начиная с C++11 конструкторы теперь могут вызывать другие конструкторы из того же класса с помощью списка инициализаторов. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
Hammasini ko'rsatish...
➡️ Удаленные и дефолтные функции struct demo { demo() = default; }; demo d; • У вас вполне закономерно может возникнуть вопрос, зачем вам писать 8+ букв (т.е. = default;), когда можно просто использовать {}, т.е. пустой конструктор? Никто вас не останавливает. Но подумай о конструкторе копирования, операторе копирования присваиванием, и т.д. • Пустой конструктор копирования, например, не то же самое, что конструктор копирования по умолчанию (который будет выполнять почленную копию всех членов). • Вы можете ограничить определенную операцию или способ инстанцирования объекта, просто удалив соответствующий метод, как показано ниже: class demo { int m_x; public: demo(int x) : m_x(x){}; demo(const demo &) = delete; demo &operator=(const demo &) = delete; }; demo obj1{123}; demo obj2 = obj1; // ОШИБКА -- вызов удаленного конструктора копирования obj2 = obj1; // ОШИБКА -- оператор = удален 🗣️ В старом С++ вы должны были сделать его приватным. Но теперь в вашем распоряжении есть директива компилятора delete. C++ Learning (https://t.me/Learning_pluses) 👩‍💻
Hammasini ko'rsatish...

00:09
Video unavailableShow in Telegram
002dc7df94232a6428e0000e78149c5f_452337_1717416387.mp410.48 MB
Yandex DEVent PRO (https://events.yandex.ru/events/deventpro_spb/?utm_source=telegram&utm_medium=cpp&utm_campaign=mg_posev_tg_devent_pro_spb&utm_content=learning_pluses_03_06_24&erid=2VSb5yu4bRJ) в Питере Это серия офлайн-митапов для опытных бэкендеров от команды Поиска и Рекламных технологий. Здесь можно в закрытом формате познакомиться с лидами из других команд, обменяться опытом и пообщаться. В этот раз митап пройдёт в Санкт-Петербурге 19 июня (https://events.yandex.ru/events/deventpro_spb/?utm_source=telegram&utm_medium=cpp&utm_campaign=mg_posev_tg_devent_pro_spb&utm_content=learning_pluses_03_06_24&erid=2VSb5yu4bRJ): будет настоящее раздолье для нетворкинга, а ещё обсуждение горячих и спорных тем по разработке в формате speed dating. Спикеры и доклады: 🟡Константин Гудков, руководитель группы разработки Feature store. Расскажет о процессе создания Feature Store — интерфейса для работы с данными, который используется ML-моделями в Рекламе 🟡Сергей Скворцов, руководитель службы поискового райнтайма. Обсудит, как анализировать производительность нативных программ под Linux под нагрузкой с помощью Perforator 🟡Николай Савушкин, руководитель службы рекомендательных технологий. Расскажет о Real-time processing в рекомендательных системах Яндекса А после докладов вас ждёт афтерпати: кальяны, аэрохоккей и прочие активности! Узнать подробную информацию и зарегистрироваться можно по ссылке (https://events.yandex.ru/events/deventpro_spb/?utm_source=telegram&utm_medium=cpp&utm_campaign=mg_posev_tg_devent_pro_spb&utm_content=learning_pluses_03_06_24&erid=2VSb5yu4bRJ). Ждём вас! Реклама. ООО "Яндекс", ИНН 7736207543.
Hammasini ko'rsatish...

Офлайн-митап для senior backend-разработчиков в культурной столице — Санкт Петербурге

Photo unavailableShow in Telegram
➡️ Циклы for по диапазону • Синтаксический сахар для перебора элементов контейнера. std::array a {1, 2, 3, 4, 5}; for (int& x : a) x *= 2; // a == { 2, 4, 6, 8, 10 } • Обратите внимание на разницу при использовании int в противовес int&: std::array a {1, 2, 3, 4, 5}; for (int x : a) x *= 2; // a == { 1, 2, 3, 4, 5 } C++ Learning (https://t.me/Learning_pluses) 👩‍💻
Hammasini ko'rsatish...