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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
加入频道
📖 ТОП-10 книг по языку программирования С++ в 2023 году

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

Читать статью
Предполагая, что buf является валидным указателем, в чем проблема в приведенном на картинке коде? Каким был бы альтернативный способ реализации этого, который позволил бы избежать этой проблемы?

Проблема в коде заключается в том, что условие --sz больше либо равно 0 всегда будет истинным, поэтому вы никогда не выйдете из цикла while (поэтому вы, вероятно, в конечном итоге испортите память или вызовете какое-то нарушение памяти или какой-либо другой программный сбой, в зависимости от того, что вы делаете внутри цикла). Причина, по которой условие, что--sz больше либо равно 0, всегда будет истинной, заключается в том, что тип sz равен size_t. size_t на самом деле просто псевдоним одного из основных беззнаковых целочисленных типов. Следовательно, поскольку sz не имеет знака, оно никогда не может быть меньше нуля (поэтому условие никогда не может быть ложным).
#вопросы_с_собеседований
Приходилось ли вам переходить на более младшую позицию в другую компанию? Например, с Senior на Middle при релокации.
#интерактив
Виртуальное наследование

Виртуальное наследование — это механизм, который позволяет решать проблемы, связанные с алмазной проблемой (diamond problem), которая возникает, когда один класс наследуется от двух классов, которые в свою очередь имеют общий базовый класс. В такой ситуации может возникнуть неоднозначность, какой именно метод или данные выбрать из общего базового класса.

Виртуальное наследование решает эту проблему путем создания единственного экземпляра общего базового класса для всех классов, которые наследуют его. Это гарантирует, что не будет создано несколько копий общих данных и методов при множественном наследовании. Виртуальное наследование применяется с использованием ключевого слова virtual перед базовым классом в объявлении наследования.
#код
Очередной #дайджест по С++:

🤖 Базовый набор для решения задач на LeetCode/Codeforces, ч.2 Ассоциативные Контейнеры C++
Продолжение полезной статьи для подготовки к собеседованиям.

🤖 Распространённые паттерны опечаток при программировании

Есть бесконечное количество способов ошибиться при написании кода. Однако иногда можно заметить явные интересные закономерности, как и где ошибаются программисты.

🤖 Smart-contract developer Road Map

В статье описано, какими навыками вам нужно обладать для того, что бы стать smart-contract разработчиком.

🤖 Быстрый двоичный поиск без ветвления

🤖 C и C++ отдают приоритет производительности, а не правильности
Статья-мнение со сравнением разных языков.
🤖 Generative AI: как ускорить разработку с помощью Github Copilot и Databricks English SDK

Давайте разберемся, что же могут помощники и SDK, а чего от них ожидать еще рано. Рассмотрим наиболее популярные решения от Github и Databricks: варианты использования и их ограничения. Также поговорим о перспективах профессии AI-инженера.

🔗 Читать статью
🔗 Зеркало
Могут ли статические функции быть виртуальными в C++?

В C++ статическая функция-член класса не может быть виртуальной. Кроме того, статические функции-члены класса не могут быть const и volatile.

В примере кода приведены две функции, обе из которых не дадут программе скомпилироваться.
#код
Инициализация полей класса через конструкторы

В C++ поля класса (также называемые членами класса или атрибутами) могут быть инициализированы через конструкторы класса. Конструкторы — это специальные методы класса, которые вызываются при создании объекта этого класса и могут использоваться для установки начальных значений его полей.

Инициализация полей через конструкторы является хорошей практикой, так как она позволяет установить начальные значения полей объекта сразу при его создании, обеспечивая более надежное и читаемое поведение программы.
#код
Как работает std::unique_ptr?

std::unique_ptr — это умный указатель (smart pointer), предназначенный для управления динамически выделенными объектами. Он обеспечивает автоматическое освобождение памяти при выходе объекта из области видимости или при необходимости.

Принцип работы std::unique_ptr заключается в том, что он владеет указателем на выделенную память и следит за временем жизни этой памяти. Когда объект std::unique_ptr выходит из области видимости, он автоматически освобождает память, на которую он указывает, путем вызова оператора delete для хранящегося указателя.
#вопросы_с_собеседований
Memory leak (утечка памяти) — это ситуация, при которой программа использует динамическую память, но забывает освободить эту память перед завершением работы или перед повторным использованием. Как результат, выделенная память остается занята в оперативной памяти, несмотря на то, что она уже не используется, и таким образом происходит утечка памяти.

Утечка памяти может привести к постепенному увеличению объема занятой оперативной памяти программой. Если утечка продолжает развиваться, это может привести к уменьшению производительности программы и даже к завершению программы из-за нехватки доступной памяти.
#код
Передача параметров в потоке в зависимости от диапазонов

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

Читать статью
💰 Обзор зарплат: сколько сейчас зарабатывают айтишники

В этой статье обсуждаем самую животрепещущую тему — зарплату. Присоединяйтесь :)

🔗 Читать статью
🔗 Зеркало
Через 10 минут начинаем эфир «Собеседование на разработчика: разбор задач и ошибок»

👉 Подключайтесьhttps://youtube.com/live/DT2UpJY2rlE?feature=share

Спикер: Алексей Бочкарев | Engineering Manager at FAANG

Что будем обсуждать:

– Комбинаторика и комбинаторные числа: определение и практические примеры

– Основные идеи динамического программирования

– Идеи рекурсии и примеры, включая inorder обход двоичного дерева

– Графы и способы их представления

– Примеры различных типов асимптотической сложности

– Распространенные ошибки в коде, как избегать обращения за границы массива, разыменования нулевого указателя, некорректная логика

🙌🏻 Запись будет опубликована здесь, подписывайтесь – https://yangx.top/proglib_academy
Любите ли вы писать тесты? Или считаете эту работу слишком скучной и бесполезной?
#интерактив
Пример оконного приложения на C++ Qt

В программе окно создается на основе библиотечного класса QFrame. Этот класс является потомком класса QWidget. Так что можно без всяких проблем заменить в программе QFrame на QWidget.
#код