Condividi tramite


Funzione parallel_transform

Applica un oggetto funzione specificata a ogni elemento in un intervallo di origine, o a una coppia di elementi da due intervalli di origine e copia i valori restituiti dell'oggetto funzione in un intervallo di destinazione, in parallelo.Questo funzionale è 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
    Il tipo del primo o solo iteratore di input.

  • _Output_iterator
    Il tipo dell'iteratore di output.

  • _Unary_operator
    Il tipo di functor unario da eseguire su ogni elemento nell'intervallo di input.

  • _Input_iterator2
    Il tipo di come iteratore di input.

  • _Binary_operator
    Il tipo di functor binario eseguito a coppie di elementi da due intervalli di origine.

  • _Partitioner

  • _First1
    Un iteratore di input destinato alla posizione del primo elemento nel primo o solo dell'intervallo di origine da utilizzare.

  • _Last1
    Un iteratore di input destinato alla posizione una dopo l'elemento finale nel primo o unicamente l'intervallo di origine da utilizzare.

  • _Result
    Un iteratore di output destinato alla posizione del primo elemento nell'intervallo di destinazione.

  • _Unary_op
    Un oggetto funzione unario definito dall'utente che viene applicato a ogni elemento nell'intervallo di origine.

  • _Part
    Un riferimento a un oggetto di partitioner.L'argomento può essere uno di constauto_partitioner&, di conststatic_partitioner&, di constsimple_partitioner& o di affinity_partitioner& se un oggetto di affinity_partitioner viene utilizzato, il riferimento deve essere un riferimento non const l-value, in modo che l'algoritmo possibile archiviare lo stato per i cicli futuri di riutilizzare.

  • _First2
    Un iteratore di input destinato alla posizione del primo elemento del secondo intervallo di origine da utilizzare.

  • _Binary_op
    Un oggetto funzione binario definito dall'utente che si applica a coppie, in un ordine avanti, i due intervalli di origine.

Valore restituito

Un iteratore di output destinato alla posizione una dopo l'elemento finale nell'intervallo di destinazione da cui vengono ricevuti gli elementi di output avrà trasformato dall'oggetto funzione.

Note

auto_partitioner verrà utilizzato per gli overload senza un argomento esplicito di partitioner.

Per gli iteratori non supportano l'accesso casuale, solo auto_partitioner è supportato.

Gli overload che accettano la trasformazione di _Unary_op dell'intervallo di input nell'intervallo di output applicando il functor unario a ogni elemento nell'intervallo di input._Unary_op deve supportare l'operatore di chiamata di funzione con la firma operator()(T) in cui T è il tipo di valore dell'intervallo che viene ripetuta più.

Gli overload che accettano la trasformazione di _Binary_op di due intervalli di input nell'intervallo di output applicando il functor binario in un elemento dal primo intervallo di input e un elemento dal secondo intervallo di input._Binary_op deve supportare l'operatore di chiamata di funzione con la firma operator()(T, U) in cui T, U sono tipi di valore di due iteratori di input.

Per ulteriori informazioni, vedere Algoritmi paralleli.

Requisiti

Header: ppl.h

Concorrenza diSpazio dei nomi:

Vedere anche

Riferimenti

Spazio dei nomi concurrency