Библиотека C/C++ разработчика | cpp, boost, qt
20.9K subscribers
1.57K photos
41 videos
16 files
3.74K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Наши каналы: https://yangx.top/proglibrary/9197

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
加入频道
Недостатки корутин в С++

Этот пост предназначен для освещения некоторых рисков, связанных с перемещением базы кода в сторону сопрограмм. Автор считает, что продолжающееся неправильное использование корутин может привести к более небезопасным и медленным программам.

Читать пост
Константные методы

В C++ ключевое слово const имеет различное значение в зависимости от контекста. Оно может быть применено к методам классов для указания, что метод не будет изменять состояние объекта, на котором он вызывается. Такие методы называются «константными методами».

Когда вы вызываете константный метод для объекта класса, компилятор гарантирует, что внутри этого метода вы не будете изменять члены данных объекта, кроме членов, объявленных как mutable (они могут изменяться внутри константных методов).
#код
«Библиотека программиста» ищет девушек, работающих в IT — разработке, тестировании, информационной безопасности и других направлениях

Мы проводим новое исследование, посвященное специфике работы женщин в IT — от сложностей и недостатков в работе до гендерных стереотипов.

Пройдите короткий опрос — он анонимный и займет не более 10 минут вашего времени.

Ссылка тут.
Наследование

Наследование — это механизм, который позволяет создавать новые классы, используя уже существующие классы как основу. Подклассы наследуют свойства и методы своих базовых классов и могут добавлять собственные свойства и методы, а также переопределять или дополнять поведение унаследованных методов.

Существует два основных типа наследования: публичное и защищенное. Публичное наследование означает, что все общедоступные члены базового класса остаются общедоступными и в производном классе. Защищенное наследование делает общедоступные члены базового класса защищенными в производном классе. Также существует приватное наследование, которое делает общедоступные члены базового класса приватными в производном классе.
#код
Очередной #дайджест по C++:

🤖 Подводные камни C++. Решаем загадки неопределённого поведения, ч. 2
Продолжение известной статьи по неопределенному поведению.

🤖 Первые новинки C++26: итоги летней встречи ISO
На недавней встрече комитет C++ активно взялся за C++26. Уже есть первые новинки, которые нас будут ждать в готовящемся стандарте C++.

🤖 Как я вошёл в клуб бага 323
Это история о баге, который бы заставил вас рвать на себе волосы. Из-за такого бага вы можете подумать: «Но это невозможно, должно быть, компилятор сломался, других вариантов нет!»

🤖 Создание вашего собственного массива
Пост фокусируется на дизайнерских решениях.

🤖 Внутри STL: конструктор shared_ptr и make_shared
Variadic templates

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

С помощью вариативных шаблонов вы можете определить функции или классы, принимающие любое количество аргументов определенных типов. Это особенно полезно, например, при написании функций форматирования строк, обобщенных контейнеров и других ситуаций, когда количество аргументов может варьироваться.
#код
Рецензия на книгу: полное руководство по стандартным алгоритмам C++

Подробное ревью на каждый абзац книги со ссылкой на скачивание в конце. Пользуйтесь!

Читать рецензию
Семантика перемещения

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

Семантика перемещения решает проблемы, связанные с копированием больших данных или ресурсов, что может быть очень затратным по времени и памяти. Вместо копирования данные «перемещаются» из одного объекта в другой, при этом исходный объект теряет право владения этими данными. Это осуществляется с использованием специальных методов и операторов, таких как конструктор перемещения (move constructor) и оператор перемещения (move assignment operator).
#код
Что выведет код сверху?

Ответ:
10 99 40 99

В этой программе мы меняем местами определенные значения в двух векторах с помощью iter_swap.
#вопросы_с_собеседований
🥷Это путь воина

Напоминаем, что «Библиотека программиста» запустила два новых канала специально для специалистов по C++ и тех, кто хочет ими стать👨‍🏫

Подписывайтесь:
👉Библиотека собеса по C++ — тут мы готовимся к интервью
👉Библиотека задач по C++ — тут решаем задачи, проходим тесты и изучаем код
Указатель на функцию

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

Указатели на функции могут быть использованы для создания таблиц функций, динамической загрузки библиотек, а также для реализации различных паттернов программирования, таких как обратный вызов (callback) и динамическое определение функциональности.
#код
Официальный репозиторий симулятора архитектуры компьютерной системы gem5.

Открыть репозиторий

Кстати, у нас есть канал с вопросами с собеседований по С++. Подписывайтесь!
👨‍💻 Большой рассказ про C++

C++ стал популярен за счёт своей скорости: его считают идеальным балансом между временем выполнения и временем реализации задачи.

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

Смотреть видео
Очередной #дайджест по С++:

✍️ Недостатки корутин в C++
Эта статья написана с целью подчеркнуть некоторые риски, связанные с переносом базы кода на использование корутин.

✍️ Неопределённое поведение в C/C++ и приёмы против лома
Rust-разработчиков бесит неопределенное поведение в С++, поэтому автор предлагает погрузиться в эту тему как можно глубже.

✍️ Базовый набор для решения задач на LeetCode/Codeforces
Описаны основные тактики решения популярных на собеседованиях задач.

✍️ Как мы за один день наняли много C++ разработчиков
Статья будет полезна тимлидам, ищущим пополнение в команду.

✍️ Муравьиный алгоритм | Задача коммивояжёра
О классическаяой комбинаторной задаче, в которой необходимо найти самый короткий маршрут, проходящий через все заданные города, и вернуться в начальную точку.
Считаете ли вы, что в вашей компании уделяется слишком много времени на ненужные созвоны и мало времени на разработку?
#интерактив
Ищем копирайтера

Нам нужен человек, который:
— Любит IT и русский язык.
— Понимает разницу между бэкендом и фронтендом, OWASP и MISRA, функциональным программированием и ООП, микроконтроллером и миникомпьютером, UX и UI.
— Имеет опыт работы от 1 года.
— Будет плюсом, если вы программируете на каком-нибудь языке на уровне стажера/джуна.

Что нужно делать:
— Готовить подборки, ТОПы книг, ютуб- и телеграм-каналов по языкам программирования.
— Делать расшифровки топовых Ютуб-роликов по теме программирования и оформлять их в виде статей.
— Готовить новостные заметки.
— Актуализировать старые статьи.
— Брать интервью у экспертов. Мы поможем с поиском экспертов.
— Иногда писать небольшие рекламные посты в телеграм.
— Писать статьи с кодом, переводить статьи (по желанию, оплачивается отдельно).

Можно использовать нейронки?
— Да, главное, чтобы материал получился интересный.

Условия:
— Белая зарплата: 50 000 руб.
— Возможность работать удаленно.

👉Присылайте свои резюме: [email protected]
Имплементация

Имплементация означает создание кода, который реализует определенную функциональность или алгоритм на конкретном языке программирования. Это процесс написания программного кода, который осуществляет определенное поведение, описанное в спецификации или дизайне.

В C++ «имплементация» означает написание кода, который реализует методы, функции или классы, описанные в заголовочных файлах (header files). Заголовочные файлы содержат объявления (прототипы) функций и классов, а файлы с исходным кодом (.cpp) содержат реализацию этих функций и методов.
#код
🔍Насколько легко «войти в айти»?

IT — перспективная отрасль с высокими зарплатами и огромной конкуренцией. Собираем ваши истории: расскажите, как вам удалось сменить профессию (или сразу найти себя), какие шаги вы для этого предприняли и с какими сложностями пришлось столкнуться.

👉Пройдите наш 10-минутный опрос по ссылке.