Библиотека 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
加入频道
Что такое виртуальный деструктор и зачем он используется в C++?

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

Если виртуального деструктора не объявлено в базовом классе, то при удалении производного объекта через указатель на базовый класс будут вызваны только деструкторы базового класса, что может привести к утечкам памяти и неопределенному поведению.
#вопросы_с_собеседований
Изменяемые лямбда-функции

Ключевое слово mutable используется для сохранения состояния в лямбда-функциях. Обычно оператор вызова функции замыкания является константным. Другими словами — лямбда не может модифицировать переменные, захваченные по значению.

Но ключевое слово mutable может быть применено ко всей лямбда-функции, что сделает все её переменные изменяемыми.

Следует заметить, что в отличии от mutable-переменных в объявлении класса, мутабельные лямбда-функции должны использоваться относительно редко и очень аккуратно. Сохранение состояния между вызовами лямбда-функции может быть опасным и контринтуитивным.
#код
Как два байта переслать: контрибьютим в KPHP

KPHP — компилятор для PHP. Он конвертирует PHP код в код на C++, компилируя который, ускоряет производительность в десятки раз. Это open-source проект, созданный ВКонтакте. Благодаря ему собирается огромный монолит ВКонтакте на 9 миллионов строк PHP кода в обычный бинарник, запуская который вы локально поднимаете полноценный ВКонтакте.

Читать статью
Генерируем пароли с помощью C++

Эта программа создает константы для допустимых символов в пароле и для длины пароля. Затем она инициализирует генератор случайных чисел и генерирует пять случайных паролей.

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

✍️ Joystick для ПК на базе Arduino
Автор делает еще один манипулятор для ПК,

✍️ Алгоритм быстрого поиска при помощи хэширования
В статье представлен алгоритм оптимизации хранения данных для быстрого поиска (на примере контейнера map).

✍️ Новый дом для Фараона (Pharaoh)
Любопытная статья про геймдизайн и не только.

✍️ Пишем виртуальную машину (интерпретатор) простого байткода + JIT компиляция
Как написать виртуальную машину С-подобного языка, которая сможет делать JIT-компиляцию байткода с помощью библиотеки libjit.

✍️ Монотонная кубическая интерполяция
В данной статье разобран алгоритм монотонной кубической интерполяции, предложенный Фритчем и Карлосоном в работе Monotone Piecewise Cubic Interpolation (1980).

✍️ Безопасность типов и ресурсов в современном C++

✍️ [sobjectizer] Несколько слов о релизе версии 5.8.0
SObjectizer — это относительно небольшой C++17 фреймворк, который позволяет использовать в С++ программах такие подходы, как Actor Model, Publish-Subscribe и Communicating Sequential Processes (CSP), что упрощает разработку сложных многопоточных приложений.
Какой ноутбук считаете наиболее подходящим для программирования и почему?
#интерактив
Подготовка к собеседованию в FAANG / Работа в FAANG
Проверить, найден ли элемент в массиве С++

В С++ вы должны использовать std::find и проверить, указывает ли результирующий указатель на конец диапазона.
#вопросы_с_собеседований
Разница в быстроте у постфиксных и префиксных инкрементных операторов

В постфиксных операторах производится дополнительная операция сохранения предыдущего состояния объекта, а затем только увеличение на 1, а в префиксном операторе после инкрементирования объекта, сразу возвращается ссылка объект. Префиксные операторы быстрее. Сигнатура их отличается фиктивным параметром int у постфиксного оператора.
#код
Как вывести форматированный текст на экран в C++

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

Читать статью
Сколько всего курсов по программированию вы купили?
#интерактив
memmove

Функция memmove используется для копирования блока памяти из одного места в другое. Она объявлена в заголовочном файле . Она принимает аргументы типа void * и const void *, что позволяет ей работать с любыми типами данных. Она просто копирует указанное количество байтов из исходного буфера в целевой.

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

Функция memmove может быть полезна для удаления элементов из массива. Например, если вы хотите удалить элемент из массива и сдвинуть оставшиеся элементы влево, вы можете использовать memmove для перемещения данных в массиве.
#код
Очередной #дайджест по C++:

✍️ C++23: статический оператор () и статический оператор []
В этой статье рассмотрели две новые функции C++23. Теперь язык позволяет оператору вызова (operator()) и оператору подписки (operator[]) быть статическими. Давайте перейдем к деталям.

✍️ Nubbing-списки в (consteval) C++
Как современный C++ справляется с, казалось бы, простой задачей: удалением повторяющихся элементов списка?

✍️ Введение в программирование на C++ для инженеров, обзор книги

✍️ CppCast: Безопасность, защищенность и современный C++, с Бьярном Страуструпом
Бьерн Страуструп присоединяется к Филу и Тимуру. Бьерн рассказывает о безопасности в C++ через профили, а также модули и концепции — и предвидит, что еще будет дальше.

✍️ Без CRT в 2023 году: советы и рекомендации
Любопытная статья от опытного программиста.
Курс «Алгоритмы и структуры данных» для разработчиков, которые хотят подготовиться к собеседованию в технологическую компанию или продвинуться по карьере.

🔹Подробная программа – https://proglib.io/w/acc674d9

▪️ бессрочный доступ

▪️ 47 видеолекций

▪️ 150 практических заданий

▪️ бессрочная поддержка в чате студентов

▪️развернутая обратная связь по всем домашним заданиям

Стоимость со скидкой 33% всего 24 190 рублей 🫶 Актуально до 31 июля.

НАЧАТЬ С ДЕМО-ДОСТУПА

Приходите, оставляйте заявку на пробную версию и знакомьтесь с самым харизматичным спикером – Степаном Мацкевичем. Он определенно получил приз зрительских симпатий от наших студентов🥰
Как вывести в консоль числа от 1 до 100 без рекурсии и циклов?

В этой программе используется концепция метапрограммирования шаблонов.
#код
Различие локальной переменной и поля класса с одинаковым именем

Указатель this может быть полезен в случае, когда локальная переменная в методе имеет то же самое имя, что и поле объекта:

void set(int x) { this->x = x; }

Здесь в методе set мы присваиваем полю класса x значение локальной переменной this. Чтобы различить поле класса x и локальную переменную с тем же именем, мы используем запись this->x при обращении к полю класса.
Кто еще не подписан на наш главный канал — очень рекомендуем!

В «Библиотеке программиста» вас ждут фундаментальные IT-темы, Git, рынок труда, главные новости и, конечно же, мемы😎

Вот вам топ недавних постов:
🔍про коммиты в ветках Git
🔍новость о создании сверхразумного ИИ
🔍подборка инфографик на фундаментальные темы
🔍дайджест нейросетей для разработки

👉Подписаться👈