Библиотека 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
加入频道
std::async

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

Функция std::async создает новый поток или использует существующий поток из пула потоков реализации для выполнения поставленной задачи. Она возвращает объект std::future, который можно использовать для получения результата или статуса вычисления.

В этом примере функция AddNumbers выполняется асинхронно с использованием std::async. Она принимает два целых числа в качестве аргументов и возвращает их сумму. Функция std::async вызывается с помощью AddNumbers и аргументов 5 и 10.
Функция std::async возвращает объект std::future, который представляет собой результат вычисления. Вызывая функцию get() на объекте future, мы блокируем выполнение до завершения вычислений и получаем результат.
Какой формат обучающих материалов предпочитаете? Статьи, видео, гайды, задачи, или личное наставничество?
#интерактив
Есть ли преимущества одного фрагмента кода перед другим? Если да, то какие?

Хотя оба варианта выполняют одно и то же, второй вариант лучше с точки зрения производительности. Это связано с тем, что оператор постинкремента itr++ дороже, чем оператор предварительного инкремента ++itr. Базовая реализация оператора постинкремента создает копию элемента перед его увеличением, а затем возвращает копию.

Тем не менее, многие компиляторы автоматически оптимизируют первый вариант, преобразовывая его во второй.
#код
60 ужасных советов разработчику на C++

Объемнейший материал, сделанный в юмористическом стиле, подскажет вам, как писать код не нужно.

Читать статью
Монадическая композиция Expected в C++

Здесь речь пойдёт о трюке, который ещё больше имитирует код под исключения C++.

Смотреть статью
Библиотечный метод

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

Формат входных данных:
На первой строке дано целое число n (1 ≤ n ≤ 100) – количество элементов в массиве. На второй строке задан сам массив: последовательность натуральных чисел, не превышающих 10^9.

Формат выходных данных:
В выходной файл выведите строки (по количеству вставок) по n чисел каждая.
GTK+

Один из самых популярных графических фреймворков нарадяду с Qt, предназначен для создания виджетов, GUI и просто красивых графических оболочек программы, поддерживает Windows, macOS X, Linux и Unix-подобные системы.

Открыть фреймворк
Количество уникальных букв в строке

Здесь мы создаем строку str и множество letters, в которое будем добавлять все буквы из строки в нижнем регистре. Затем мы проходим по каждому символу c в строке, и если он является буквой, то добавляем его в множество letters. В конце выводим размер множества letters, который и представляет собой количество различных букв в строке.

Функция std::isalpha() из библиотеки используется для проверки того, является ли символ буквой. Мы также используем функцию std::tolower() из той же библиотеки, чтобы перевести буквы в нижний регистр, так как unordered_set считает A и a разными символами.
#код
Взгляд внутрь memcmp на оборудовании Intel AVX2

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

Читать статью
PIMPL (Pointer to Implementation)

PIMPL — это паттерн программирования, который позволяет скрыть внутреннюю реализацию класса от клиента, а также упростить перекомпиляцию кода и улучшить производительность.

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

В данном примере пользователь класса MyObject не видит внутреннюю реализацию объекта, что позволяет добавлять/удалять поля без необходимости изменять интерфейс класса. Работа с внутренними данными осуществляется через методы класса Impl, которые вызываются в функциях-членах класса MyObject.
#код
Сколько курсов вы купили и не стали проходить?
Расскажите в комментариях ⬇️
#интерактив
🤝 5 soft skills, которые помогут тебе дорасти до Senior-разработчика

Как думаешь, что нужно уметь, чтобы стать крутым Senior-разработчиком или даже создать свой успешный стартап? Спойлер: нет, не только хорошо кодить.

🔗 Основной сайт
🔗 Зеркало
В чем проблема следующего фрагмента?

Из спецификации (C++11 §5.3.5/3):

Если статический тип подлежащего удалению объекта отличается от его динамического типа, статический тип должен быть базовым классом динамического типа подлежащего удалению объекта и иметь виртуальный деструктор или поведение undefined.
#вопросы_с_собеседований
Unity запускает платформы Sentis и Muse AI для создания 3D в реальном времени.

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

Эмулятор Nintendo 3DS для устройств Apple на базе Citra.

Открыть страницу
AMD — вечная канарейка Intel

Если прямо сейчас посмотреть на рынок процессоров, то может сложиться обманчивое впечатление, что AMD на равных конкурирует за место под солнцем с компанией Intel. Кто-то может посчитать, что так было всегда. Реальность же заключается в том, что если Intel всю свою историю колебалась между полной гегемонией и просто доминированием на рынке процессоров для персональных компьютеров и серверов, то AMD в хорошие моменты своей истории была строго второй, а в плохие — находилась буквально при смерти.

Читать статью
Какие сериалы/фильмы о программировании мотивируют вас продолжать обучение?
#интерактив
Что за ошибка в приведенном ниже коде и как ее исправить?

Последним аргументом memset должен быть sizeof(*bar), а не sizeof(bar). sizeof(bar) вычисляет размер bar (то есть самого указателя), а не размер структуры, на которую указывает bar. Поэтому код можно исправить, используя sizeof(*bar) в качестве последнего аргумента вызова memset.
Сравниваем 2 строки на одинаковые буквы

Для сравнения двух строк на одинаковые буквы можно использовать стандартную функцию strcmp() из библиотеки.

В данном примере две строки "hello" и "holle" сравниваются на одинаковые буквы. Функция strcmp() возвращает 0, если строки совпадают, и любое другое число, если строки не совпадают. Если строки содержат одинаковые буквы, выводится сообщение "Строки содержат одинаковые буквы", иначе - "Строки содержат разные буквы".
Числа с плавающей точкой для гуманитариев. Что это такое и как они работают

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

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