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
➡️ Делегирование конструкторов • В старом C++ вам нужно создавать функцию-член для инициализации и вызывать ее из всех констр
➡️ Делегирование конструкторов • В старом C++ вам нужно создавать функцию-член для инициализации и вызывать ее из всех конструкторов для достижения универсально инициализации. • Но начиная с C++11 конструкторы теперь могут вызывать другие конструкторы из того же класса с помощью списка инициализаторов. C++ Learning (https://t.me/Learning_pluses) 👩‍💻

➡️ Удаленные и дефолтные функции 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) 👩‍💻

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.

➡️ Циклы for по диапазону • Синтаксический сахар для перебора элементов контейнера. std::array a {1, 2, 3, 4, 5}; for (int& x
➡️ Циклы 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) 👩‍💻

Объявляю ошибку вида if (x = 42) вымирающей и заношу её в Красную книгу C и C++ багов https://pvs-studio.ru/ru/blog/posts/cpp/1127/

➡️ auto & decltype • auto-типизированные переменные выводятся компилятором на основе типа их инициализатора. • Чрезвычайно по
➡️ 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) 👩‍💻

➡️ Пользовательские литералы • По большей части это будут какие-нибудь реальные единицы, такие как kb, mb, км, см, рубли, дол
➡️ Пользовательские литералы • По большей части это будут какие-нибудь реальные единицы, такие как kb, mb, км, см, рубли, доллары, евро и т.д. Пользовательские литералы позволяют вам не определять функции, для выполнения преобразования единиц измерения во время выполнения, а работать с ним как с другими примитивными типами. • Очень удобно для единиц и измерения. • Благодаря добавлению constexpr вы можете добиться нулевого влияния на производительность во время выполнения. C++ Learning (https://t.me/Learning_pluses) 👩‍💻

➡️ Что такое mutable? Ключевое слово mutable позволяет изменять члены объекта, даже если этот объект является константным. На
➡️ Что такое mutable? Ключевое слово mutable позволяет изменять члены объекта, даже если этот объект является константным. Наиболее часто это используется в случаях, когда нужно изменить состояние объекта для внутреннего использования, например, для кэширования или статистики. 🔽Преимущества использования mutable • Контроль над состоянием: Позволяет изменять внутреннее состояние объекта, даже если остальные части объекта не изменяются. • Кэширование и оптимизация: Полезно для кэширования результатов вычислений или статистики, что может повысить производительность программы. • Удобство: Упрощает код, позволяя изменять отдельные члены объекта, не нарушая его неизменяемость в других аспектах. Вывод 🔵 Рассмотрим пример, где mutable используется для ведения внутреннего счетчика доступа к методу объекта, который является const. C++ Learning (https://t.me/Learning_pluses) 👩‍💻

#Вопросы_с_собеседования Какие отличия у std::array и std::vector? std::array - это обёртка вокруг обычного массива, фиксированного размера, а std::vector - это динамически расширяемый массив. std::array хранит свои данные в стековой памяти, а vector выделяет память в куче (динамическая память). У std::array в параметрах шаблона указывается тип хранимых элементов и размер массива. А у std::vector - тип элементов и ещё возможно указать аллокатор, который нужно использовать при выделении памяти (с помощью new). std::array чуть лучше по производительности в случае небольшого массива, чем std::vector, который содержит в себе несколько указателей, которые указывают на выделенный в куче кусок памяти.

#вопросы_с_собеседований Для чего нужен атрибут fallthrough? Атрибут [[fallthrough]] используется для явного указания того, что в конструкции switch нужно пропустить break в конце case и перейти к выполнению следующего case. По умолчанию в С++17 и новее переход между case без break приводит к ошибке компиляции и чтобы сохранить старое поведение и разрешить переход, нужно добавить [[fallthrough]]. Это улучшает читаемость кода, явно указывая на отсутствие break и помогает избежать случайного отсутствия break, когда разработчик забыл его добавить. [[fallthrough]] также полезен при рефакторинге старого кода с switch в современный стандарт С++.

photo content

Ровно год назад автор канал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

🚀 Начинаете свой путь в разработке на С++? Ждём вас на открытом практическом уроке «Шаблоны в С++ и основы метапрограммирова
🚀 Начинаете свой путь в разработке на С++? Ждём вас на открытом практическом уроке «Шаблоны в С++ и основы метапрограммирования» от OTUS, где мы разберем: - мощный инструмент создания и настройки типов во время компиляции с помощью шаблонов в C++; - как шаблоны обогащают функциональность языка и улучшают процесс разработки; - ответы на все возникающие вопросы. Спикер Евгений Пальчуковский — разработчик с большим международным опытом в финтехе. ⏰ Встречаемся 28 мая в 20:00 мск в преддверии старта курса «Специализация C++ Developer». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS! ➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: РЕГИСТРАЦИЯ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

📔 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

Типы данных в C++
Типы данных в C++

Aubio Aubio — это библиотека с открытым исходным кодом для анализа звука на C++. Она предоставляет широкий набор функций для
Aubio Aubio — это библиотека с открытым исходным кодом для анализа звука на C++. Она предоставляет широкий набор функций для работы с аудиоданными, включая считывание и запись аудиофайлов, анализ спектра, обнаружение и отслеживание тональности, анализ темпа и ритма, обнаружение начала звука, фильтрация и обработка звука. https://github.com/aubio/aubio #для_продвинутых

🦾 Ты круто кодишь на С++, really? Попробуй пройти тест наш по C++ и проверь подходит ли тебе наш курс Ответишь — пройдешь на
🦾 Ты круто кодишь на С++, really? Попробуй пройти тест наш по C++ и проверь подходит ли тебе наш курс Ответишь — пройдешь на продвинутый курс "C++ Developer. Professional" от OTUS по специальной цене + получишь запись мастер-класса от преподавателя курса. 👉 ПРОЙТИ ТЕСТ: https://clck.ru/39xR9R Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

libuv libuv — это кросс-платформенная библиотека поддержки с фокусом на асинхронный ввод-вывод. Она была первоначально разраб
libuv libuv — это кросс-платформенная библиотека поддержки с фокусом на асинхронный ввод-вывод. Она была первоначально разработана для использования в Node.js, но также используется в Luvit, Julia, uvloop и других проектах. https://github.com/libuv/libuv #для_продвинутых

Многообразие связных списков https://habr.com/ru/articles/814955/