Compartilhar via


Função de parallel_buffered_sort

Organiza os elementos em um intervalo especificado em uma ordem de nondescending ou de acordo com um critério de classificação especificada por um predicado binário, em paralelo.Esta função é semanticamente similar ao std::sort que é uma classificação baseada em comparar, instável, no local, exceto que ele precisa de O(n) espaço adicional e requer inicialização padrão para os elementos que estão sendo classificados.

template<
   typename _Random_iterator
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Allocator,
   typename _Random_iterator
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Allocator,
   typename _Random_iterator
>
inline void parallel_buffered_sort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

Parâmetros

  • _Random_iterator
    O tipo de iterador de intervalo de entrada.

  • _Allocator
    O tipo de um alocador de memória compatível STL.

  • _Function
    O tipo de comparador binário.

  • _Begin
    Um iterador de acesso aleatório a posição do primeiro elemento no intervalo de endereçamento a ser classificado.

  • _End
    Um iterador de acesso aleatório endereçamento posição um após o elemento final do intervalo a ser classificado.

  • _Alloc
    Uma instância de um alocador de memória compatível STL.

  • _Func
    Um objeto de função de predicado definida pelo usuário que define o critério de comparação para ser atendida por elementos sucessivos na ordem.Um predicado binário leva dois argumentos e retorna true quando satisfeita e false quando não atendida.Esta função comparador deve impor uma ordem fraca estrita em pares de elementos da seqüência.

  • _Chunk_size
    O tamanho mínimo de um bloco que será dividido em dois para execução em paralelo.

Comentários

Todas as sobrecargas exigem n * sizeof(T) espaço adicional, onde n é o número de elementos a serem classificados e T é o tipo de elemento.Na maioria dos casos parallel_buffered_sort mostrar uma melhoria no desempenho sobre parallel_sort, e você deve usá-lo pela parallel_sort se você tiver memória disponível.

Se você não fornecer um comparador binário std::less é usado como padrão, que requer o tipo de elemento fornecer o operador operator<().

Se você não fornecer um tipo de alocador ou ocorrência, o alocador de memória STL std::allocator<T> é usado para alocar o buffer.

O algoritmo divide o intervalo de entrada em duas partes e sucessivamente divide cada bloco em dois sub-chunks para execução em paralelo.O argumento opcional _Chunk_size pode ser usado para indicar o algoritmo que deve lida com blocos de tamanho < _Chunk_sizeem série.

Requisitos

Cabeçalho: ppl.h

Namespace: concorrência

Consulte também

Referência

simultaneidade Namespace