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