C++ Эволюция
2.72K subscribers
296 photos
2 videos
106 links
Обучающий канал по C++
Download Telegram
🚀 Присоединяйтесь к "IT Магистрат"!

В этом канале делятся увлекательными историями из мира IT и кибербезопасности. Здесь вы найдете все самое важное о защите данных и последних технологических новинках. Не пропустите уникальную возможность быть в курсе всех IT-событий!

👉 Подписывайтесь сейчас на @ITMagistrat и станьте частью этого сообщества!
oneDNN

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

https://github.com/oneapi-src/oneDNN

#для_продвинутых
## Открой дверь в мир технологий с Технобутик! 🗝️

Технобутик - твой проводник в бескрайнюю вселенную:

* 💫 Новейших технологий: будь в курсе последних разработок и инноваций.
* 🌐 Интернет-культуры:  погрузись в мир мемов, трендов и онлайн-сообществ.
* 🧠 Умных нейросетей:  узнай, как искусственный интеллект меняет нашу жизнь.
* 🚀 И многого другого!

Подписывайся и расширяй свои горизонты вместе с нами!

➡️ @Technobutik
🔥 Это база 434 вопроса с собеседований на C/C++ разработчика. Фишка в том, что просчитана вероятность с которой вопрос буден задан и есть примеры ответов. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам 😏
Tiny-dnn

Tiny-dnn — это легкая библиотека глубокого обучения, написанная на C++14. Она предназначена для работы на устройствах с ограниченными вычислительными ресурсами, таких как встраиваемые системы и устройства Интернета вещей (IoT).

#для_продвинутых
MXNet

MXNet — это высокопроизводительная библиотека глубокого обучения с открытым исходным кодом, поддерживающая различные языки программирования, включая C++. Она предлагает широкий набор функций для создания, обучения и развертывания нейронных сетей.

#для_продвинутых
Libev

Libev — это кроссплатформенная библиотека для асинхронного ввода-вывода, основанная на событиях. Она позволяет разработчикам писать высокопроизводительный асинхронный код C++ без необходимости вручную управлять потоками или таймерами.

#для_продвинутых
libuv

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

https://github.com/libuv/libuv

#для_продвинутых
Aubio

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

https://github.com/aubio/aubio

#для_продвинутых
Типы данных в C++
Крупнейший образовательный центр «Алабуга Политех» приглашает освоить  профиль «Аэронавигация и программирование БПЛА» для выпускников 9-11 классов Обучение проходить по дуальной системе:✈️
работа + обучение в колледже.

 бесплатное обучение
 зарплата до 160 000 рублей
 проживание в современных ЖКС
Студенты официально трудоустраиваются и получают навыки на производстве под руководством опытных наставников.

Подавай заявку на поступление в «Алабуга Политех»
#вопросы_с_собеседований
Для чего нужен атрибут fallthrough?

Атрибут [[fallthrough]] используется для явного указания того, что в конструкции switch нужно пропустить break в конце case и перейти к выполнению следующего case.

По умолчанию в С++17 и новее переход между case без break приводит к ошибке компиляции и чтобы сохранить старое поведение и разрешить переход, нужно добавить [[fallthrough]].

Это улучшает читаемость кода, явно указывая на отсутствие break и помогает избежать случайного отсутствия break, когда разработчик забыл его добавить.
[[fallthrough]] также полезен при рефакторинге старого кода с switch в современный стандарт С++.
#Вопросы_с_собеседования
Какие отличия у std::array и std::vector?

std::array - это обёртка вокруг обычного массива, фиксированного размера, а std::vector - это динамически расширяемый массив. std::array хранит свои данные в стековой памяти, а vector выделяет память в куче (динамическая память). У std::array в параметрах шаблона указывается тип хранимых элементов и размер массива. А у std::vector - тип элементов и ещё возможно указать аллокатор, который нужно использовать при выделении памяти (с помощью new). std::array чуть лучше по производительности в случае небольшого массива, чем std::vector, который содержит в себе несколько указателей, которые указывают на выделенный в куче кусок памяти.
Друзья! Курс «Реверсивный инжиниринг ПО под ОС Windows» начинается 3 июня. Скидка 10% по промокоду VESNA10 при оплате до 31 мая.

В курсе подробно рассматривается синтаксис Ассемблера, анализ приложений различного уровня сложности, от простейших crackme до полноценных программ на современных архитектурах.
Необходимые знания: язык Ассемблера, С/С++, python, навыки работы с IDA и другими инструментами для реверса

ВЫ ПОЛУЧИТЕ:
- Сертификат/удостоверение о повышении квалификации
- Сопровождение и поддержку Академии Кодебай
- Возможности трудоустройства/стажировки

Пишите нам
или звоните +74994441750

Подробнее о курсе → здесь
➡️ Что такое mutable?

Ключевое слово mutable позволяет изменять члены объекта, даже если этот объект является константным.

Наиболее часто это используется в случаях, когда нужно изменить состояние объекта для внутреннего использования, например, для кэширования или статистики.

🔽Преимущества использования mutable


Контроль над состоянием: Позволяет изменять внутреннее состояние объекта, даже если остальные части объекта не изменяются.

Кэширование и оптимизация: Полезно для кэширования результатов вычислений или статистики, что может повысить производительность программы.

Удобство: Упрощает код, позволяя изменять отдельные члены объекта, не нарушая его неизменяемость в других аспектах.
Вывод

🔵 Рассмотрим пример, где mutable используется для ведения внутреннего счетчика доступа к методу объекта, который является const.


C++ Learning 👩‍💻
Хотите прокачаться в разработке на С++?

Ждём вас на открытом практическом уроке «Условные переменные в С++» от OTUS, где мы разберем:

— что такое std::condition_variable и какие задачи он решает;
— типовые ошибки при его использовании;
— что такое spurious wakeup.

А также напишем несколько concurrency-примитивов на основе condition_variable.

Спикер — ведущий программист с большим международным опытом.

Встречаемся 11 июня в 20:00 мск в преддверии старта курса «C++ Developer. Professional». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!

Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: РЕГИСТРАЦИЯ
➡️ Пользовательские литералы

По большей части это будут какие-нибудь реальные единицы, такие как kb, mb, км, см, рубли, доллары, евро и т.д. Пользовательские литералы позволяют вам не определять функции, для выполнения преобразования единиц измерения во время выполнения, а работать с ним как с другими примитивными типами.

Очень удобно для единиц и измерения.

Благодаря добавлению constexpr вы можете добиться нулевого влияния на производительность во время выполнения.

C++ Learning 👩‍💻
⚡️В сети начали находить курсы и книги известных онлайн школ в открытом доступе

Вот отсортированная база с тонной материала(постепенно пополняется):

🔗 БАЗА (3385 видео):

(343 видео, 87 книги) — Java
(176 видео, 32 книги) — Git
(293 видео, 63 книги) — C#
(352 видео, 89 книги) — С++
(167 видео, 53 книги) — PHP
(227 видео, 83 книги) — SQL
(163 видео, 29 книги) — Linux
(363 видео, 122 книги) — Python
(415 видео, 168 книги) — Frontend
(143 видео, 33 книги) — Flask
(167 видео, 43 книги) — Django
(197 видео, 49 книги) — Разработка ботов
(137 видео, 93 книги) — Data Science
(113 видео, 82 книги) — GameDev
(129 видео, 73 книги) — QA

Скачивать ничего не нужно — все выложили в Telegram и на YouTube с доступом по ссылке
➡️ Циклы for по диапазону

Синтаксический сахар для перебора элементов контейнера.

std::array<int, 5> a {1, 2, 3, 4, 5};
for (int& x : a) x *= 2;
// a == { 2, 4, 6, 8, 10 }


Обратите внимание на разницу при использовании int в противовес int&:

std::array<int, 5> a {1, 2, 3, 4, 5};
for (int x : a) x *= 2;
// a == { 1, 2, 3, 4, 5 }


C++ Learning 👩‍💻