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

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

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

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
🌎 ТОП-10: рейтинг лучших зарубежных работодателей в IT

При составлении рейтинга учитывали различные факторы из открытых данных портала Glassdoor, включая отзывы сотрудников, уровень лояльности действующих и бывших сотрудников, зарплата, льготы, бонусы и прочие бенефиты.

1️⃣ Red Hat
2️⃣ Gainsight
3️⃣ Box
4️⃣ MathWorks
5️⃣ ServiceNow
6️⃣ Marvell Technology
7️⃣ CrowdStrike
8️⃣ Fortinet
9️⃣ NetApp
🔟 Genentech

👉 Читать статью
👍41
🎉🥳🍾 Кстати, нас уже больше 20 000! Спасибо за интерес к «Библиотека C/C++ разработчика».
🎉414👾4👏2
Виртуальные функции

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


Чтобы объявить функцию виртуальной, необходимо использовать ключевое слово virtual в определении функции в базовом классе. Производные классы могут переопределять виртуальные функции с помощью того же ключевого слова virtual. Таким образом, при вызове виртуальной функции через указатель или ссылку на базовый класс будет вызвана версия функции из реального типа объекта.
❤‍🔥36🔥5👍2
Как работает std::unique_ptr?

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

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


Когда объект std::unique_ptr выходит из области видимости, он автоматически освобождает память, на которую он указывает, путем вызова оператора delete для хранящегося указателя.
28👍4👏1🥱1
Константные методы

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

Когда вы вызываете константный метод для объекта класса, компилятор гарантирует, что внутри этого метода вы не будете изменять члены данных объекта, кроме членов, объявленных как mutable (они могут изменяться внутри константных методов).
👍85🔥1
🤔 Очередной #дайджест по С++

💠 Современный С++ в разработке девайсов — подход к разработке приложений на С++ для умных устройств с виртуальным ассистентом

💠 Подготовка инструментов под фаззинг UEFI на базе edk2 в Windows — об одном из способов с использованием программного эмулятора EDKII, чтобы проводить фаззинг без развертывания аппаратных стендов

💠 Книга «Разработка приложений на C++ с использованием Boost» — рассказывается о библиотеках Boost, которые помогают разрабатывать качественные, быстрые и портативные приложения

💠 Проектно-ориентированное обучение — список пошаговых туториалов: реализация аллокаторов, файловых систем, текстовых редакторов, баз данных с нуля

💠 Ranges Library в C++20 — уникальные дизайнерские решения для повышения производительности
❤‍🔥25👍9🔥3🥰1
Какой ссылочный модификатор используется для определения ссылочной переменной?
Anonymous Quiz
4%
$
2%
#
87%
&
6%
Ничего из вышеперечисленного
🤔20👍6👏1
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍61
📚 C++ System Programming Cookbook (2020)

✍️ Автор: Онорато Ватиконе
📃 Cтраниц: 292

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

Что внутри:

🔸 Ознакомитесь с основами, включая makefile, компиляцию, связывание и отладку
🔸 Углубите свои знания об управлении памятью
🔸 Используете процессы и потоки для синхронизации
🔸 Узнаете, как правильно взаимодействовать с консолью
👍10🔥6
🧑‍🔬🏥 CLI'нический парсинг

Каждый программист однажды получает по голове необходимостью парсить аргументы командной строки. Кого-то этот удар сломит и заставит написать несколько сотен строк кода, по которому потом будут восстанавливать интерфейс программы следующие поколения, другие сделают наборы рантайм мап и начнут оперировать строками, по которым будет уже непонятно, то ли это так и должно быть, то ли опечатка... Последние в порыве отчаяния возьмут целый boost для этой задачи, а тот сведётся всё к тем же рантайм мапам и строкам.

Здесь вы найдете увлекательный процесс создания этого Франкенштейна

#гайд
🔥17👍5👏1
🧨⚠️ ТОП-10 ошибок в C и С++ проектах в 2023 году

Не просто статья о том, как где-то в коде допустили ошибку, а целое волшебство кодинга. 10 масштабных и зрелищных разборов ошибок.

Читать статью

#почитать
👍3🔥1
Что будет, если в двух файлах сделать функцию с одинаковым именем и параметрами? На каком этапе возникнет ошибка?

💩 Если вы определите функцию с одинаковым именем и параметрами в двух разных файлах, это нарушит One Definition Rule. Это правило гласит, что в пределах одной программы не может быть более одного определения любой переменной, функции или класса.

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

💩 Один из способов решения этой проблемы - использование пространств имен. Вы можете поместить каждую функцию в свое собственное пространство имен, чтобы избежать конфликта имен. Например:

// fileA.cpp
namespace FileA {
void foo(int a) {
// Some code for file A
}
}

// fileB.cpp
namespace FileB {
void foo(int a) {
// Some code for file B
}
}


💩 Теперь вы можете использовать обе функции в своей программе, указывая пространство имен перед именем функции: FileA::foo(1); и FileB::foo(2);.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12😁7👍6🎉4🥰2
Квиз со звёздочкой для С++ программистов

Если устали от рутинных задач и хотите поразмять мозг чем-то интересным, welcome.

Несколько тестов для избавления от утренней скуки найдет здесь

#почитать
🔥11🥱42
🤔 Очередной #дайджест по С++

🍬 Книга «Coding Clean, Reliable, and Safe REST APIs with ASP.NET Core 8» — все о протоколе HTTP, стиле архитектуры REST и ASP.NET Core 8

🍬 Крутые функции современного C++ для использования в вашем проекте — парочка современных функций C++ и объяснение на минималистичном примере

🍬 Современный С++ в разработке девайсов — детали подхода разработки и взаимодействия с виртуальным ассистентом

🍬 Длительность хранения и Non-local Objects в C++ — рассмотрение глобальных переменных, динамических и локальных объектов потоков

🍬 Технические собеседования — что болит у тех, кто их проводит и кто на них приходит
🤩23❤‍🔥19👍3🔥1
#задача

В шахматном турнире на звание гроссмейстера участвовало 12 человек, каждый сыграл с каждым по одной партии. За победу давалось 1 очко, за ничью — 0.5 очка, за поражение — 0 очков.

По итогам турнира звание гроссмейстера присваивали, если участник набрал более 70% от числа очков, получаемых в случае выигрыша всех партий.


Могли ли получить звание гроссмейстера:
● 7 участников?
● 8 участников?

Метод от противного, покажем, что получить звание мастера могли не более 7 участников.

Пусть их было 8

💩 Тогда каждый набрал не менее 0.7 * 11 = 7.7 очков, т.е. не менее 8 очков. Получаем, что все они в сумме набрали не менее 8 * 8 = 64 очков.
💩 В то же время в партиях с участниками, не получившими звание мастера, каждый из них набрал не более 4 очков. Это дает не более 4 * 8 = 32 очков.
💩 Значит, участники, ставшие мастерами, должны были набрать в партиях между собой не менее 32 очков. Но таких партий будет всего (8 * 8 - 8) / 2 = 28. Получаем противоречие.

Пусть их было 7


💩 Пусть первые 7 всегда выигрывали у последних 5, а все остальные партии завершились вничью.
💩 Тогда первые 7 участников набрали по 1 * 5 + 0.5 * 6 = 8 очков, а последние 5 по 0 * 7 + 0.5 * 4 = 2 очка.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥35👍5🤔4🥱3👏1
Shared memory

Shared memory является мощным инструментом для межпроцессного взаимодействия, позволяя нескольким процессам совместно использовать область памяти.

Это может быть полезно для:

💩 Повышения производительности: Обмен данными через shared memory гораздо быстрее, чем традиционные методы, такие как межсетевое взаимодействие или файлы.
💩 Уменьшения задержки: Данные доступны обоим процессам напрямую в памяти, устраняя необходимость копирования.
💩 Упрощения синхронизации: Совместное использование памяти упрощает реализацию синхронизации между процессами.

Однако использование shared memory также имеет свои сложности:

💩 Потенциальные ошибки синхронизации: Необходимо тщательно продумать механизмы синхронизации, чтобы избежать проблем.
💩 Отсутствие защиты памяти: Доступ к shared memory могут получить и другие процессы, если не реализованы механизмы защиты.
💩 Сложность отладки: Отладка программ, использующих shared memory, может быть более сложной, чем отладка традиционных программ.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥22👍182