#04 C++ Жемчужины STD - transform for_each
00:03 Введение в STD Gems -Джули приветствует зрителей и объявляет тему видео: трансформеры в STD Gems. -Трансформеры позволяют применять произвольные функции к ряду элементов. 00:35 Перегрузки функций -Обсуждаются перегрузки функций в STD Gems, их количество и различия между версиями C. -До C20 функция имела одну перегрузку, после C20 — другую, с добавлением выражения const. -Две перегрузки связаны с политикой выполнения, но на данный момент они не поддерживаются компиляторами. 01:26 Базовая версия преобразования -Базовая версия использует диапазон входных данных, итератор вывода и унарную операцию. -Пример использования: преобразование строки с помощью функции upper. 02:45 Работа на месте -Итератор ввода и итератор вывода могут указывать на тот же контейнер. -Преобразование выполняется на месте, записывая результаты в начало диапазона. 03:40 Вторая версия преобразования -Вторая версия использует два входных диапазона и бинарную операцию. -Итерация по диапазонам выполняется в тандеме, позволяя выполнять операции параллельно. 04:30 Пример использования второй версии -Пример преобразования двух векторов с использованием бинарной операции. -Важность отсутствия побочных эффектов в операциях преобразования. 07:18 Преимущества transform перед copy -transform позволяет применять преобразования к значениям без их копирования. -Пример сравнения значений и выбора большего из двух контейнеров. 10:42 Ограничения transform -Нельзя изменять входные данные. -Операции не должны иметь побочных эффектов. -Преобразование не гарантирует последовательного применения операций. 11:03 Ограничения побочных эффектов -Запрещено иметь побочные эффекты в функциях. -Невозможно применять операции по порядку. -Для решения проблемы используется std::for_each. 11:35 Операции без изменения последовательности -Функции, изменяющие последовательность, должны выводить значение в выходной итератор. -Немодифицирующие операции могут иметь любые побочные эффекты. 12:06 Описание функции std::for_each -Функция требует диапазон и унарную функцию. -Работает как цикл for, но позволяет управлять диапазоном. -Гарантирует выполнение операций по порядку. 12:56 Пример использования std::for_each -Удвоение количества первых пяти элементов в контейнере A. -Операция for_each не возвращает значения, побочные эффекты важны. 14:18 Применение std::transform в 3D-графике -В конвейере 3D-графики std::transform используется для применения вершинного шейдера к входным вершинам. -std::transform хорошо вписывается в многие сценарии. 15:07 Заключение -Версия std::transform с двумя входами очень мощная и недостаточно используется. -Автор призывает не забывать об этой функции. -Благодарность за просмотр и призыв нажать «Нравится».
00:03 Введение в STD Gems -Джули приветствует зрителей и объявляет тему видео: трансформеры в STD Gems. -Трансформеры позволяют применять произвольные функции к ряду элементов. 00:35 Перегрузки функций -Обсуждаются перегрузки функций в STD Gems, их количество и различия между версиями C. -До C20 функция имела одну перегрузку, после C20 — другую, с добавлением выражения const. -Две перегрузки связаны с политикой выполнения, но на данный момент они не поддерживаются компиляторами. 01:26 Базовая версия преобразования -Базовая версия использует диапазон входных данных, итератор вывода и унарную операцию. -Пример использования: преобразование строки с помощью функции upper. 02:45 Работа на месте -Итератор ввода и итератор вывода могут указывать на тот же контейнер. -Преобразование выполняется на месте, записывая результаты в начало диапазона. 03:40 Вторая версия преобразования -Вторая версия использует два входных диапазона и бинарную операцию. -Итерация по диапазонам выполняется в тандеме, позволяя выполнять операции параллельно. 04:30 Пример использования второй версии -Пример преобразования двух векторов с использованием бинарной операции. -Важность отсутствия побочных эффектов в операциях преобразования. 07:18 Преимущества transform перед copy -transform позволяет применять преобразования к значениям без их копирования. -Пример сравнения значений и выбора большего из двух контейнеров. 10:42 Ограничения transform -Нельзя изменять входные данные. -Операции не должны иметь побочных эффектов. -Преобразование не гарантирует последовательного применения операций. 11:03 Ограничения побочных эффектов -Запрещено иметь побочные эффекты в функциях. -Невозможно применять операции по порядку. -Для решения проблемы используется std::for_each. 11:35 Операции без изменения последовательности -Функции, изменяющие последовательность, должны выводить значение в выходной итератор. -Немодифицирующие операции могут иметь любые побочные эффекты. 12:06 Описание функции std::for_each -Функция требует диапазон и унарную функцию. -Работает как цикл for, но позволяет управлять диапазоном. -Гарантирует выполнение операций по порядку. 12:56 Пример использования std::for_each -Удвоение количества первых пяти элементов в контейнере A. -Операция for_each не возвращает значения, побочные эффекты важны. 14:18 Применение std::transform в 3D-графике -В конвейере 3D-графики std::transform используется для применения вершинного шейдера к входным вершинам. -std::transform хорошо вписывается в многие сценарии. 15:07 Заключение -Версия std::transform с двумя входами очень мощная и недостаточно используется. -Автор призывает не забывать об этой функции. -Благодарность за просмотр и призыв нажать «Нравится».




