Библиотека 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
加入频道
📊 Как я входил в IT? Результаты опроса «Библиотеки программиста»

Вы когда-нибудь задумывались о том, как входят в IT люди, у которых нет технического образования? Насколько тяжело начать карьеру с чистого листа в зрелом возрасте? Вот и мы решили выяснить это.

Читать статью
Что лучше: ООП или функциональный подход?
#интерактив
static_assert

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

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

✍️ Шпаргалка по модели памяти С++11
Модель памяти представляет из себя спецификацию допустимого поведения многопоточных программ, работающих с разделяемой памятью (shared memory).

✍️ Как мы анализируем потребление памяти нативными приложениями (C++, Windows, Linux)
В процессе эксплуатации решений, созданных на платформе 1С:Предприятие, разработчики иногда сталкивались с тем, что в определенных сценариях потребление памяти процессами платформы казалось избыточным.

✍️ Блеск и нищета std::format
Сравнительно недавно в stdlib плюсов появилось форматирование строк «как в питоне», а точнее, как в библиотеке fmt.
decltype

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

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

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

В этом примере кода показано, как decltype используется для определения типа выражения. Результат работы этого кода будет зависеть от того, какие значения будут присвоены переменным и какие функции будут вызваны.
#код
μMon: тупой простой мониторинг

Автор представляет μMon – его личный, минималистский и самоуверенный подход к мониторингу хостов, основанный на RRDtool, SNMP, некоторых облегченных сценариях оболочки и небольшом сервере FastCGI, написанном с использованием скромного подмножества современного C++.

Читать статью
ACID (Atomicity, Consistency, Isolation, Durability)

В языке C++ концепция ACID может использоваться при работе с базами данных, например, при использовании библиотеки SQLite. ACID гарантирует, что транзакции будут выполнены одновременно и когда они закончатся, база данных находится в согласованном состоянии.

Atomicity гарантирует, что транзакция будет выполнена как одно целое и либо полностью, либо не выполнится вообще.

Consistency гарантирует, что данные в базе будут согласованы с правилами и ограничениями базы данных.

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

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

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

Компилятор с хорошим оптимизатором может встраивать рекурсивные вызовы до некоторой глубины, зафиксированной во время компиляции (скажем, три или пять рекурсивных вызовов), и вставлять нерекурсивные вызовы во время компиляции для случаев, когда фактическая глубина будет превышена во время выполнения.
#вопросы_с_собеседований
forward_list

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

Добавление, удаление и перемещение элементов внутри списка или между несколькими списками не инвалидирует итераторы, которые в настоящее время ссылаются на другие элементы в списке. Однако итератор или ссылка, ссылающиеся на элемент, инвалидируются, когда соответствующий элемент удаляется (через erase_after) из списка.

В этом примере мы создаем forward_list с именем numbers, с помощью метода front() получаем первый элемент списка и выводим его на экран. Далее мы перебираем все элементы списка с помощью цикла for и выводим их на экран.
#код
Essence: настольная операционная система, созданная с нуля для обеспечения контроля и простоты. Довольно интересный вариант для тех, кому хочется чего-то нового.

Открыть сайт
🎮 Идеальный подарок геймеру: Xbox vs PlayStation vs Nintendo Switch vs Steam Deck

В продолжение темы предыдущего опроса рассмотрим самые популярные платформы на рынке – Xbox, PlayStation, Nintendo Switch и Steam Deck – и поможем вам определиться с выбором.

🔗Читать статью
🔗Зеркало
Please open Telegram to view this post
VIEW IN TELEGRAM
Очередной дайджест по С++:

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

Примечания к OpenMP
Записки по курсу Тима Мэтсона.

Базовое модульное тестирование C++ с помощью GTest, CMake и подмодулей
Повторное использование проектов C++ — достаточно плохой опыт. Когда дело доходит до накладных расходов, вызванных интеграцией с такими вещами, как фреймворки модульного тестирования, кошмар может стать значительно хуже.

Defold — это совершенно бесплатный игровой движок для разработки настольных, мобильных и веб-игр.
Хотите ли вы изучить vim или он вам не нужен?
#интерактив
Применение указателя unique_ptr

В функции foo1 мы выделяем память для указателя ptr и затем освобождаем ее с помощью оператора delete. Однако, если произойдет исключение во время работы функции, то память не будет освобождена, что приведет к утечке памяти.

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

Данный тип указателей полезен, когда нужен указатель на объект, на который НЕ будет других указателей и который будет удален после удаления указателя.
#код
vptr (Virtual Pointer)

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

В этом примере мы создали два класса: Base и Derived. Класс Derived наследуется от класса Base и переопределяет его виртуальную функцию func(). Затем мы создали объект класса Derived и присвоили его адрес указателю на базовый класс Base.

Затем вызываем функцию func() с помощью указателя на базовый класс. Здесь vptr смотрит на таблицу виртуальных функций, чтобы определить, какую функцию вызывать.

Результатом будет вывод "Derived", так как мы переопределили функцию в классе Derived.
#код
Советы и рекомендации по управлению памятью

В прошлом году я усовершенствовал свой подход к управлению памятью. С практикой это становится эффективным, простым и быстрым; обычно так же просто в использовании, как и сбор мусора, но без затрат.

Читать статью
Сколько вы тратите времени в день на работу по факту?
#интерактив
«Библиотека программиста» продолжает поиски контент-менеджера для ведения телеграм-каналов

Ищем человека, который грамотно пишет и разбирается в одной из этих тем:
👉С++
👉Frontend
👉мобильная разработка
👉Data Science

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Подробнее о вакансии и форма для отклика — по ссылке.

Ждем вас в команде!
namespace alias

В C++, вы можете использовать «namespace alias» (псевдоним пространства имен) для упрощения работы с длинными именами пространств имен. Это позволяет вам создать более короткий псевдоним для длинного имени пространства имен, что улучшает читаемость кода и уменьшает вероятность конфликтов имен.

Для создания псевдонима пространства имен используйте ключевое слово namespace с алиасом (псевдонимом).
#код