Aracılığıyla paylaş


parallel_radixsort işlevi

Belirtilen aralıktaki öğelerin bir olmayan azalan düzende sıralama algoritmasını taban kullanarak yerleştirir. İmzalanmamış tamsayı benzeri anahtarlarına sıralanan öğeleri proje bir projeksiyon işlevi gerektiren kararlı sıralama işlevi budur. Sıralanan öğeleri için varsayılan başlatma gereklidir.

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
);

Parametreler

  • _Random_iterator
    Giriş aralığı Yineleyici türü.

  • _Allocator
    stl uyumlu bellek ayırıcı yazın.

  • _Function
    Projeksiyon işlevi türü.

  • _Begin
    Sıralanan aralıkta ilk öğenin konumunu adresleme bir rasgele erişim Yineleyici.

  • _End
    Sıralanacak geçen aralıktaki son öğenin konumunu adresleme bir rasgele erişim Yineleyici.

  • _Alloc
    stl uyumlu bellek ayırıcı örneği.

  • _Proj_func
    Öğenin ayrılmaz bir değere dönüştüren projeksiyon kullanıcı tanımlı işlevi nesnesi.

  • _Chunk_size
    İki paralel yürütme içine split öbek mimimum boyutu.

Notlar

Gerekli tüm aşırı n * sizeof(T) ek alan nerede n sıralanması için öğe sayısı ve T öğe türü. Bir imza ile tekli projeksiyon functorI _Proj_func(T) bir öğe verilen bir anahtar döndürmek için gerekli nerede T öğe türü ve I imzalanmamış bir tamsayı benzeri türüdür.

Projeksiyon işlevi belirtmezseniz, yalnızca öğe döndüren varsayılan projeksiyon işlevi ayrılmaz türleri için kullanılır. İşlev öğesi olmadığında projeksiyon işlevi, tamsayı türü ise derleme başarısız olacaktır.

Bir ayırıcı yazın veya stl bellek ayırıcı örneği vermezseniz std::allocator<T> arabellek ayırmak için kullanılır.

Algoritma giriş aralığı iki bölmek böler ve her bir parça paralel yürütme için iki sub-chunks ilki böler. İsteğe bağlı bağımsız değişkeni _Chunk_size algoritması, işleme boyutu parçalarını belirtmek için kullanılan < _Chunk_sizeseri olarak.

Gereksinimler

Başlık: ppl.h

Namespace: eşzamanlılık

Ayrıca bkz.

Başvuru

eşzamanlılık ad