Библиотека 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
加入频道
Что вы считаете самой большой своей неудачей за всю карьеру?
#интерактив
Начать курс «Алгоритмы и структуры данных» с вводной части можно уже сегодня бесплатно

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

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

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

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

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

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

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

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

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

Как и pair, tuple — коллекция значений различных типов данных конкретного размера.

В некоторых случаях вместо tuple удобнее использовать std::array. Это обычный массив с некоторыми функциями стандартной библиотеки C++, который был добавлен в C++11.
#код
Очередной #дайджест по C++:

✍️ Форматирование текста на C++ старым и новым способом
Какой из способов форматирования лучше в плане производительности?

✍️ Когда private, но очень хочется public
Если нельзя, но очень хочется, то можно.

✍️ Промышленные контроллеры, Linux и только C++. Часть 1
Об автоматизации производства.

✍️ Визуализация алгоритмов стандартной библиотеки C++
Автору пришла идея отделить визуализацию алгоритма от его исполнения, тогда можно будет визуализировать любой алгоритм.

✍️ Основы C++: Указатели и Итераторы
Статья о базовых понятиях языка.
template

Ключевое слово template используется в шаблонных функциях и классах для определения обобщённых типов данных, которые могут быть использованы при разработке универсальных алгоритмов.

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

Несмотря на то, что template используется для объявления шаблонных классов и функций, он может также применяться для реализации SFINAE.
Это означает, что при использовании шаблонов и при неудачной попытке их инстанцирования компилятор не сгенерирует ошибку, а будет искать альтернативные варианты. Использование этой концепции позволяет более гибко управлять перегрузками функций и классов, что может быть особенно полезно при написании библиотек или фреймворков.
#код
Инструменты и библиотеки для создания собственного игрового движка на C++

Итак, вы хотите узнать больше об игровых движках и написать свой самостоятельно? Это потрясающе! Чтобы помочь вам в этом путешествии, вот несколько рекомендаций по библиотекам и зависимостям C++, которые помогут вам сразу же приступить к делу.

Читать статью
const и volatile указатели

Const и volatile указатели используются для дополнительного контроля над данными, на которые они указывают.

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

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

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

Они могут быть объявлены как виртуальные или чисто виртуальные, но не как константные, изменчивые, константные изменчивые или статические.
#вопросы_с_собеседований
🔎💼🗺️ Как программисту искать (и найти) работу за границей в 2023 году

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

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

#поискработы
string.back

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

Возвращаемое значение имеет тип символа строки, обычно char или wchar_t. Если строка пустая, то поведение функции неопределенно, поэтому нужно проверять, что строка не пуста, прежде чем вызывать back().

string.back часто используется в циклах для обработки символов строки с конца или для проверки последнего символа.
#код
Pcap

Pcap — это библиотека для захвата и анализа сетевого трафика.

Она используется для:
— Сниффинга сети;
— Анализа протоколов;
— Отладки сетевых приложений.

Код из примера открывает устройство для захвата пакетов, в цикле считывает пакеты и выводит их длину.
#код
Очередной #дайджест по С++:

✍️ Fibers в C++: основы
Fibers (волокна) менее узнаваемая концепция по сравнению с coroutines (сопрограммами), является довольно мощным дополнением к кооперативной многозадачности.

✍️ Отчет о поездке на встречу ISO C++ в Варне
Пост с впечатлениями разработчика от посещения конференции.

✍️ Godot — это не новый Unity. Анатомия вызова API Godot
Критика в статье даже заинтересовала разработчиков движка, которые позже связались с автором.

✍️ userver 1.0: выпуск платформы для программ, связанных с вводом-выводом
Прошло больше года с тех пор, как разработчики открыли исходный код userver. Они реализовали множество функций по просьбе новых пользователей.
На каком языке вы пишите сейчас и на какой хотели бы перейти?
#интерактив
Алгоритм partial_sort

partial_sort — это алгоритм сортировки из стандартной библиотеки, который упорядочивает только часть контейнера.
Сортирует элементы в диапазоне [first, middle). Элементы справа от middle остаются без изменений.

При работе с частью данных эффективнее полной сортировки. Внутри использует алгоритм quicksort.

Применение:
— Быстрый поиск K наибольших/наименьших элементов.
— Сортировка только части большого массива данных.
— Оптимизация производительности по сравнению с полной сортировкой.
#код
Что такое SIMD-инструкции?

SIMD-инструкции — это специальные команды процессора, которые работают с векторными регистрами и могут выполнять одну операцию над несколькими элементами данных параллельно.

Например, при сложении двух векторов из четырех float чисел вместо четырех инструкций сложения с SIMD можно выполнить одну команду, которая сложит эти вектора за одну операцию.

Основные преимущества SIMD:
— Повышение производительности за счет параллельных вычислений.
— Эффективное использование пропускной способности процессора.
— Уменьшение количества инструкций за счет векторизации.
— Оптимизация алгоритмов обработки массивов, матриц, фильтрации, графики.
#вопросы_с_собеседований
std::conditional_variable

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

Основной метод std::condition_variable — это wait(), который блокирует вызывающий поток до тех пор, пока другой поток не оповестит его с помощью метода notify_one() или notify_all(). Когда вызывается wait(), текущий поток освобождает блокировку, которая должна быть захвачена вместе с вызовом wait(), и ожидает, пока другой поток не вызовет один из методов оповещения. После получения оповещения поток пробуждается и пытается повторно захватить блокировку, и если блокировка успешно захватывается, поток может продолжить свою работу.

В этом примере создается поток workerThread, который ожидает сигнала от основного потока. Основной поток засыпает на 2 секунды, а затем устанавливает флаг ready в true и оповещает ожидающий поток с помощью notify_one(). workerThread пробуждается и выводит сообщение в консоль.
#код
📊 Как я входил в IT? Результаты опроса «Библиотеки программиста»

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

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

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

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

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

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

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