Compartilhar via


Função de parallel_radixsort

Organiza elementos em um intervalo especificado em uma ordem não decrescente usando um algoritmo de classificação de base.Essa é uma função de classificação estável que requer uma função de projeção que pode projetar elementos a ser classificado em chaves de tipo inteiro não assinadas.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 de intervalo de entrada.

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

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

  • _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.

  • _Proj_func
    Um objeto de função definida pelo usuário projeção converte um elemento em um valor inteiro.

  • _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.Um functor de projeção unário com a assinaturaI _Proj_func(T) é necessário para retornar uma chave quando um elemento específico, onde T é o tipo de elemento e I é um tipo de tipo inteiro não assinado.

Se você não fornecer uma função de projeção, uma função de projeção padrão que simplesmente retorna o elemento é usada para tipos integrais.A função falhará ao compilar 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 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