Compartilhar via


Função parallel_transform

Aplica um objeto especificado da função a cada elemento em um intervalo de origem, ou a um par de elementos de dois intervalos de origem, e copia valores de retorno do objeto da função em um intervalo de destino, em paralelo. Este funcional é 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
);

Parâmetros

  • _Input_iterator1
    O tipo do primeiro ou apenas iterador entrada.

  • _Output_iterator
    O tipo do iterador de saída.

  • _Unary_operator
    O tipo de funtor unário a ser executado em cada elemento no intervalo de entrada.

  • _Input_iterator2
    O tipo de segundo iterador de entrada.

  • _Binary_operator
    O tipo de funtor binário executada por par em elementos dos dois intervalos de origem.

  • _Partitioner

  • _First1
    Um iterador de entrada que trata a posição do primeiro elemento na primeira ou apenas do intervalo de origem ser operado em.

  • _Last1
    Um iterador de entrada que trata a posição uma depois do elemento final na primeira ou o intervalo de origem ser operado em.

  • _Result
    Um iterador de saída que trata a posição do primeiro elemento no intervalo de destino.

  • _Unary_op
    Um objeto unário definido pelo usuário da função que é aplicado a cada elemento no intervalo de origem.

  • _Part
    Uma referência ao objeto de partitioner. O argumento pode ser um de constauto_partitioner&, de conststatic_partitioner&, de constsimple_partitioner& ou de affinity_partitioner& se um objeto de affinity_partitioner for usado, a referência deve ser uma referência de l- valor de não const, de forma que o algoritmo possa armazenar o estado para que o loop futuros reuso.

  • _First2
    Um iterador de entrada que trata a posição do primeiro elemento no intervalo de segunda fonte ser operado em.

  • _Binary_op
    Um objeto binário definido pelo usuário da função que é aplicado em pares, em ordem avançar, os dois intervalos de origem.

Valor de retorno

Um iterador de saída que trata a posição uma depois do elemento final no intervalo de destino que está recebendo os elementos de saída transformados pelo objeto de função.

Comentários

auto_partitioner será usado para as sobrecargas sem um argumento explícito de partitioner.

Para os iteradores que não dão suporte de acesso aleatório, somente auto_partitioner tem suporte.

As sobrecargas que usam o argumento _Unary_op torna o intervalo de entrada no intervalo de saída aplicando o funtor unário para cada elemento no intervalo de entrada. _Unary_op deve oferecer suporte ao operador de chamada de função com assinatura operator()(T) onde T é o tipo de valor de intervalo que está sendo iterada sobre.

As sobrecargas que usam o argumento _Binary_op torna dois intervalos de entrada no intervalo de saída aplicando o funtor binário a um elemento do primeiro intervalo de entrada e um elemento do intervalo de entrada. _Binary_op deve oferecer suporte ao operador de chamada de função com assinatura operator()(T, U) onde T, U é tipos de valor de dois iteradores de entrada.

Para obter mais informações, consulte Algoritmos paralelos.

Requisitos

Cabeçalho: ppl.h

Namespace: simultaneidade

Consulte também

Referência

Namespace Concurrency