Funzione parallel_transform
Applica uno specifico oggetto funzione ad ogni elemento in un intervallo di origine, o ad una coppia di elementi da due intervalli di origine e copia i valori restituiti dell'oggetto funzione in un intervallo di destinazione, in parallelo. Questa funzione è semanticamente equivalente a 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
);
Parametri
_Input_iterator1
Tipo del primo o del solo iteratore di input._Output_iterator
Tipo di iteratore di output._Unary_operator
Tipo del functor unario che deve essere eseguito su ogni elemento nell'intervallo di input._Input_iterator2
Tipo del secondo iteratore di input._Binary_operator
Tipo del functor binario che deve essere eseguito a coppie sugli elementi di due intervalli di origine._Partitioner
_First1
Iteratore di input che punta alla posizione del primo elemento nel primo o nel solo intervallo di origine da utilizzare._Last1
Iteratore di input che punta alla prima posizione dopo l'elemento finale nel primo o nel solo intervallo di origine da utilizzare._Result
Iteratore di output che punta alla posizione del primo elemento nell'intervallo di destinazione._Unary_op
Oggetto funzione unario definito dall'utente che viene applicato a ogni elemento nell'intervallo di origine._Part
Riferimento all'oggetto partitioner. L'argomento può essere constauto_partitioner&, conststatic_partitioner&, constsimple_partitioner& o affinity_partitioner& Se viene utilizzato un oggetto affinity_partitioner, il riferimento deve essere un riferimento non const l-value, così l'algoritmo può archiviare lo stato per i cicli futuri per riutilizzarlo._First2
Iteratore di input che punta alla posizione del primo elemento nel secondo intervallo di origine da utilizzare._Binary_op
Oggetto funzione binario definito dall'utente che si applica a coppie, in ordine progressivo, a due intervalli di origine.
Valore restituito
Un iteratore di output che punta alla prima posizione dopo l'elemento finale nell'intervallo di destinazione che riceve gli elementi di output trasformati dall'oggetto funzione.
Note
auto_partitioner verrà utilizzato per gli overload senza un argomento partitioner esplicito.
Per gli iteratori che non supportano l'accesso casuale, solo auto_partitioner è supportato.
Gli overload che accettano l'argomento _Unary_op trasformano l'intervallo di input nell'intervallo di output applicando il functor unario ad ogni elemento nell'intervallo di input. _Unary_op deve supportare l'operatore di chiamata a funzione con la firma operator()(T) dove T è il tipo di valore dell'intervallo che viene scorso in un ciclo.
Gli overload che accettano l'argomento _Binary_op trasformano due intervalli di input nell'intervallo di output applicando il functor binario ad un elemento dal primo intervallo di input e ad un elemento dal secondo intervallo di input. _Binary_op deve supportare l'operatore di chiamata a funzione con la firma operator()(T, U) dove T, U sono i tipi dei valori dei due iteratori di input.
Per ulteriori informazioni, vedere Algoritmi paralleli.
Requisiti
Header: ppl.h
Spazio dei nomi: concorrenza