Compartilhar via


Função parallel_radixsort

Organiza os elementos em um intervalo especificado não em ordem decrescente usando um algoritmo de classificação raiz. Essa é uma função estável do tipo que requer uma função de projeção que pode projetar os elementos ser classificado em inteiro não assinado como chaves. A inicialização padrão é necessária para os elementos que estão sendo classificados.

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

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

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

template<
   typename _Random_iterator,
   typename _Function
>
inline void parallel_radixsort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Proj_func,
   const size_t _Chunk_size = 256 * 256
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_radixsort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Proj_func,
   const size_t _Chunk_size = 256 * 256
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_radixsort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Proj_func,
   const size_t _Chunk_size = 256 * 256
);

Parâmetros

  • _Random_iterator
    O tipo de iterador do intervalo de entrada.

  • _Allocator
    O tipo de um alocador de correspondência de memória STL.

  • _Function
    O tipo da função de projeção.

  • _Begin
    Um iterador de acesso aleatório que trata a posição do primeiro elemento no intervalo ser classificada.

  • _End
    Um iterador de acesso aleatório que trata a posição uma depois do elemento final no intervalo ser classificada.

  • _Alloc
    Uma instância de um alocador de correspondência de memória STL.

  • _Proj_func
    Um objeto definido pelo usuário da função de projeção que converte um elemento em um valor integral.

  • _Chunk_size
    O tamanho de mimimum de uma parte que é dividida em dois para execução paralela.

Comentários

Todas as sobrecargas exigem espaço adicional de n * sizeof(T) , onde n é o número de elementos a serem classificados, e T é o tipo de elemento. Um funtor unário de projeção à assinaturaI _Proj_func(T) é necessário retornar uma chave quando um elemento, onde T é o tipo de elemento e I é um inteiro não assinado como tipo.

Se você não fornecer uma função de projeção, uma função de projeção padrão que retorna apenas o elemento é usada para tipos integrais. A função não criará se o elemento não é um tipo integral na ausência de uma função de projeção.

Se você não fornecer um tipo ou uma instância do alocador, o alocador std::allocator<T> de memória STL é usada para atribuir o buffer.

O algoritmo divide o intervalo de entrada em duas partes e divide por cada parte secundária em duas partes para execução em paralelo. O argumento opcional _Chunk_size pode ser usado para indicar ao algoritmo que ele deve partes das alças de tamanho <_Chunk_size em série.

Requisitos

Cabeçalho: ppl.h

Namespace: simultaneidade

Consulte também

Referência

Namespace Concurrency