Функция parallel_transform
Применяет параллельно заданный объект функции к каждому элементу в диапазоне источника или к паре элементов из двух исходных диапазонов и копирует возвращаемые значения объекта функции в диапазон назначения. Эта функция семантически эквивалентна std::transform.
template <
typename _Input_iterator1,
typename _Output_iterator,
typename _Unary_operator
>
_Output_iterator parallel_transform(
_Input_iterator1_First1,
_Input_iterator1_Last1,
_Output_iterator_Result,
const _Unary_operator& _Unary_op,
const auto_partitioner& _Part = auto_partitioner()
);
template <
typename _Input_iterator1,
typename _Output_iterator,
typename _Unary_operator
>
_Output_iterator parallel_transform(
_Input_iterator1_First1,
_Input_iterator1_Last1,
_Output_iterator_Result,
const _Unary_operator& _Unary_op,
const static_partitioner& _Part
);
template <
typename _Input_iterator1,
typename _Output_iterator,
typename _Unary_operator
>
_Output_iterator parallel_transform(
_Input_iterator1_First1,
_Input_iterator1_Last1,
_Output_iterator_Result,
const _Unary_operator& _Unary_op,
const simple_partitioner& _Part
);
template <
typename _Input_iterator1,
typename _Output_iterator,
typename _Unary_operator
>
_Output_iterator parallel_transform(
_Input_iterator1_First1,
_Input_iterator1_Last1,
_Output_iterator_Result,
const _Unary_operator& _Unary_op,
affinity_partitioner& _Part
);
template <
typename _Input_iterator1,
typename _Input_iterator2,
typename _Output_iterator,
typename _Binary_operator,
typename _Partitioner
>
_Output_iterator parallel_transform(
_Input_iterator1_First1,
_Input_iterator1_Last1,
_Input_iterator2_First2,
_Output_iterator_Result,
const _Binary_operator& _Binary_op,
_Partitioner&& _Part
);
template <
typename _Input_iterator1,
typename _Input_iterator2,
typename _Output_iterator,
typename _Binary_operator
>
_Output_iterator parallel_transform(
_Input_iterator1_First1,
_Input_iterator1_Last1,
_Input_iterator2_First2,
_Output_iterator_Result,
const _Binary_operator& _Binary_op
);
Параметры
_Input_iterator1
Тип первого или единственного итератора ввода._Output_iterator
Тип итератора вывода._Unary_operator
Тип унарного функтора, который должен выполняться для каждого элемента в диапазоне._Input_iterator2
Тип второго итератора ввода._Binary_operator
Тип бинарного функтора, выполняемого над парой элементов из двух исходных диапазонов._Partitioner
_First1
Итератор ввода указывает на позицию первого элемента в первом или единственном обрабатываемого диапазоне источника._Last1
Итератор ввода указывает на позицию, следующую за последним элементом в первом или единственном обрабатываемого диапазоне источника._Result
Итератор вывода указывает на позицию первого элемента в диапазоне назначения._Unary_op
Определенный пользователем объект функции, который применяется к каждому элементу в диапазоне источника._Part
Ссылка на объект-разделитель. Аргумент может быть одним из constauto_partitioner&, conststatic_partitioner&, constsimple_partitioner& или affinity_partitioner&, если используется объект affinity_partitioner, ссылка должен быть неконстантной l-value ссылкой, чтобы алгоритм мог сохранять состояние для последующих циклов при повторном использовании._First2
Итератор ввода указывает на позицию первого элемента во втором обрабатываемого диапазоне источника._Binary_op
Определяемый пользователем объект функции, который последовательно применяется к парам элементов из двух исходных последовательностей.
Возвращаемое значение
Итератор вывода указывает на позицию после последнего элемента в целевом диапазоне, который получает выходные элементы, преобразованные объектом функции.
Заметки
auto_partitioner используется для перегруженных функций без явного аргумента разделения.
Для итераторов, не поддерживающих прямой доступ, поддерживается только auto_partitioner.
Перегруженные версии, принимающие аргумент _Unary_op, преобразуют диапазон ввода в диапазон вывода путем применения унарного функтора к каждому элементу в диапазоне. _Unary_op должен поддерживать оператор вызова функции с сигнатурой operator()(T), где T является типом значения обрабатываемого диапазона.
Перегруженные версии, принимающие аргумент _Binary_op, преобразуют два диапазона ввода в диапазон вывода путем применения бинарного функтора на один элемент из первого диапазона ввода и один элемент из второго диапазона. _Binary_op должен поддерживать оператор вызова функции с сигнатурой operator()(T, U), где T, U являются типами значений входных итераторов.
Для получения дополнительной информации см. Параллельные алгоритмы.
Требования
Заголовок: ppl.h
Пространство имен: concurrency