std::async
В C++ std::async — это шаблон функции, предоставляемый стандартной библиотекой. Он используется для асинхронного выполнения функции или вызываемого объекта и получения объекта future, представляющего результат вычислений.
Функция std::async создает новый поток или использует существующий поток из пула потоков реализации для выполнения поставленной задачи. Она возвращает объект std::future, который можно использовать для получения результата или статуса вычисления.
В этом примере функция AddNumbers выполняется асинхронно с использованием std::async. Она принимает два целых числа в качестве аргументов и возвращает их сумму. Функция std::async вызывается с помощью AddNumbers и аргументов 5 и 10.
Функция std::async возвращает объект std::future, который представляет собой результат вычисления. Вызывая функцию get() на объекте future, мы блокируем выполнение до завершения вычислений и получаем результат.
В C++ std::async — это шаблон функции, предоставляемый стандартной библиотекой. Он используется для асинхронного выполнения функции или вызываемого объекта и получения объекта future, представляющего результат вычислений.
Функция std::async создает новый поток или использует существующий поток из пула потоков реализации для выполнения поставленной задачи. Она возвращает объект std::future, который можно использовать для получения результата или статуса вычисления.
В этом примере функция AddNumbers выполняется асинхронно с использованием std::async. Она принимает два целых числа в качестве аргументов и возвращает их сумму. Функция std::async вызывается с помощью AddNumbers и аргументов 5 и 10.
Функция std::async возвращает объект std::future, который представляет собой результат вычисления. Вызывая функцию get() на объекте future, мы блокируем выполнение до завершения вычислений и получаем результат.
Какой формат обучающих материалов предпочитаете? Статьи, видео, гайды, задачи, или личное наставничество?
#интерактив
#интерактив
Есть ли преимущества одного фрагмента кода перед другим? Если да, то какие?
Хотя оба варианта выполняют одно и то же, второй вариант лучше с точки зрения производительности. Это связано с тем, что оператор постинкремента itr++ дороже, чем оператор предварительного инкремента ++itr. Базовая реализация оператора постинкремента создает копию элемента перед его увеличением, а затем возвращает копию.
Тем не менее, многие компиляторы автоматически оптимизируют первый вариант, преобразовывая его во второй.
#код
#Дайджест полезных материалов по С++. Сохраняй и делись с другом!
🤖 Что такое пир-ревью и зачем оно нужно вашей команде
🤖 Как создать свой мод для Cyberpunk 2077? Шерстим исходники, Lua, C++ и Python
🤖 Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1
🤖 Типы, больше типов
🤖 Raylib: опыт использования абсолютным новичком и что из этого вышло
🤖 Интероперабельность между С++ и Rust
🤖 Что такое пир-ревью и зачем оно нужно вашей команде
🤖 Как создать свой мод для Cyberpunk 2077? Шерстим исходники, Lua, C++ и Python
🤖 Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1
🤖 Типы, больше типов
🤖 Raylib: опыт использования абсолютным новичком и что из этого вышло
🤖 Интероперабельность между С++ и Rust
60 ужасных советов разработчику на C++
Объемнейший материал, сделанный в юмористическом стиле, подскажет вам, как писать код не нужно.
Читать статью
Объемнейший материал, сделанный в юмористическом стиле, подскажет вам, как писать код не нужно.
Читать статью
Монадическая композиция Expected в C++
Здесь речь пойдёт о трюке, который ещё больше имитирует код под исключения C++.
Смотреть статью
Здесь речь пойдёт о трюке, который ещё больше имитирует код под исключения C++.
Смотреть статью
Библиотечный метод
Продемонстрируйте работу метода сортировки вставками по возрастанию. Для этого выведите состояние данного массива после каждой вставки на отдельных строках. Если массив упорядочен изначально, не нужно ничего выводить.
Формат входных данных:
На первой строке дано целое число n (1 ≤ n ≤ 100) – количество элементов в массиве. На второй строке задан сам массив: последовательность натуральных чисел, не превышающих 10^9.
Формат выходных данных:
В выходной файл выведите строки (по количеству вставок) по n чисел каждая.
Продемонстрируйте работу метода сортировки вставками по возрастанию. Для этого выведите состояние данного массива после каждой вставки на отдельных строках. Если массив упорядочен изначально, не нужно ничего выводить.
Формат входных данных:
На первой строке дано целое число n (1 ≤ n ≤ 100) – количество элементов в массиве. На второй строке задан сам массив: последовательность натуральных чисел, не превышающих 10^9.
Формат выходных данных:
В выходной файл выведите строки (по количеству вставок) по n чисел каждая.
GTK+
Один из самых популярных графических фреймворков нарадяду с Qt, предназначен для создания виджетов, GUI и просто красивых графических оболочек программы, поддерживает Windows, macOS X, Linux и Unix-подобные системы.
Открыть фреймворк
Один из самых популярных графических фреймворков нарадяду с Qt, предназначен для создания виджетов, GUI и просто красивых графических оболочек программы, поддерживает Windows, macOS X, Linux и Unix-подобные системы.
Открыть фреймворк
Количество уникальных букв в строке
Здесь мы создаем строку str и множество letters, в которое будем добавлять все буквы из строки в нижнем регистре. Затем мы проходим по каждому символу c в строке, и если он является буквой, то добавляем его в множество letters. В конце выводим размер множества letters, который и представляет собой количество различных букв в строке.
Функция std::isalpha() из библиотеки используется для проверки того, является ли символ буквой. Мы также используем функцию std::tolower() из той же библиотеки, чтобы перевести буквы в нижний регистр, так как unordered_set считает A и a разными символами.
#код
Здесь мы создаем строку str и множество letters, в которое будем добавлять все буквы из строки в нижнем регистре. Затем мы проходим по каждому символу c в строке, и если он является буквой, то добавляем его в множество letters. В конце выводим размер множества letters, который и представляет собой количество различных букв в строке.
Функция std::isalpha() из библиотеки используется для проверки того, является ли символ буквой. Мы также используем функцию std::tolower() из той же библиотеки, чтобы перевести буквы в нижний регистр, так как unordered_set считает A и a разными символами.
#код
Взгляд внутрь memcmp на оборудовании Intel AVX2
memcmp — это функция стандартной библиотеки Cи, которая лексикографически сравнивает два массива. Она знакома программистам на Cи и часто используется в качестве строительного блока для строковых операций в других языках.
Читать статью
memcmp — это функция стандартной библиотеки Cи, которая лексикографически сравнивает два массива. Она знакома программистам на Cи и часто используется в качестве строительного блока для строковых операций в других языках.
Читать статью
PIMPL (Pointer to Implementation)
PIMPL — это паттерн программирования, который позволяет скрыть внутреннюю реализацию класса от клиента, а также упростить перекомпиляцию кода и улучшить производительность.
Суть PIMPL-паттерна заключается в том, что все данные хранятся в отдельном класс, а в основном хранится только указатель на этот вспомогательный класс, в котором осуществляется вся работа с данными.
В данном примере пользователь класса MyObject не видит внутреннюю реализацию объекта, что позволяет добавлять/удалять поля без необходимости изменять интерфейс класса. Работа с внутренними данными осуществляется через методы класса Impl, которые вызываются в функциях-членах класса MyObject.
#код
PIMPL — это паттерн программирования, который позволяет скрыть внутреннюю реализацию класса от клиента, а также упростить перекомпиляцию кода и улучшить производительность.
Суть PIMPL-паттерна заключается в том, что все данные хранятся в отдельном класс, а в основном хранится только указатель на этот вспомогательный класс, в котором осуществляется вся работа с данными.
В данном примере пользователь класса MyObject не видит внутреннюю реализацию объекта, что позволяет добавлять/удалять поля без необходимости изменять интерфейс класса. Работа с внутренними данными осуществляется через методы класса Impl, которые вызываются в функциях-членах класса MyObject.
#код
🤝 5 soft skills, которые помогут тебе дорасти до Senior-разработчика
Как думаешь, что нужно уметь, чтобы стать крутым Senior-разработчиком или даже создать свой успешный стартап? Спойлер: нет, не только хорошо кодить.
🔗 Основной сайт
🔗 Зеркало
Как думаешь, что нужно уметь, чтобы стать крутым Senior-разработчиком или даже создать свой успешный стартап? Спойлер: нет, не только хорошо кодить.
🔗 Основной сайт
🔗 Зеркало
В чем проблема следующего фрагмента?
Из спецификации (C++11 §5.3.5/3):
Если статический тип подлежащего удалению объекта отличается от его динамического типа, статический тип должен быть базовым классом динамического типа подлежащего удалению объекта и иметь виртуальный деструктор или поведение undefined.
#вопросы_с_собеседований
Из спецификации (C++11 §5.3.5/3):
Если статический тип подлежащего удалению объекта отличается от его динамического типа, статический тип должен быть базовым классом динамического типа подлежащего удалению объекта и иметь виртуальный деструктор или поведение undefined.
#вопросы_с_собеседований
AMD — вечная канарейка Intel
Если прямо сейчас посмотреть на рынок процессоров, то может сложиться обманчивое впечатление, что AMD на равных конкурирует за место под солнцем с компанией Intel. Кто-то может посчитать, что так было всегда. Реальность же заключается в том, что если Intel всю свою историю колебалась между полной гегемонией и просто доминированием на рынке процессоров для персональных компьютеров и серверов, то AMD в хорошие моменты своей истории была строго второй, а в плохие — находилась буквально при смерти.
Читать статью
Если прямо сейчас посмотреть на рынок процессоров, то может сложиться обманчивое впечатление, что AMD на равных конкурирует за место под солнцем с компанией Intel. Кто-то может посчитать, что так было всегда. Реальность же заключается в том, что если Intel всю свою историю колебалась между полной гегемонией и просто доминированием на рынке процессоров для персональных компьютеров и серверов, то AMD в хорошие моменты своей истории была строго второй, а в плохие — находилась буквально при смерти.
Читать статью
Какие сериалы/фильмы о программировании мотивируют вас продолжать обучение?
#интерактив
#интерактив
Что за ошибка в приведенном ниже коде и как ее исправить?
Последним аргументом memset должен быть sizeof(*bar), а не sizeof(bar). sizeof(bar) вычисляет размер bar (то есть самого указателя), а не размер структуры, на которую указывает bar. Поэтому код можно исправить, используя sizeof(*bar) в качестве последнего аргумента вызова memset.
Последним аргументом memset должен быть sizeof(*bar), а не sizeof(bar). sizeof(bar) вычисляет размер bar (то есть самого указателя), а не размер структуры, на которую указывает bar. Поэтому код можно исправить, используя sizeof(*bar) в качестве последнего аргумента вызова memset.
Сравниваем 2 строки на одинаковые буквы
Для сравнения двух строк на одинаковые буквы можно использовать стандартную функцию strcmp() из библиотеки.
В данном примере две строки "hello" и "holle" сравниваются на одинаковые буквы. Функция strcmp() возвращает 0, если строки совпадают, и любое другое число, если строки не совпадают. Если строки содержат одинаковые буквы, выводится сообщение "Строки содержат одинаковые буквы", иначе - "Строки содержат разные буквы".
Для сравнения двух строк на одинаковые буквы можно использовать стандартную функцию strcmp() из библиотеки.
В данном примере две строки "hello" и "holle" сравниваются на одинаковые буквы. Функция strcmp() возвращает 0, если строки совпадают, и любое другое число, если строки не совпадают. Если строки содержат одинаковые буквы, выводится сообщение "Строки содержат одинаковые буквы", иначе - "Строки содержат разные буквы".