Range-v3
Range algorithms, views, and actions for the Standard Library
ranges::stable_sort_fn Struct Reference

Public Member Functions

template<typename I , typename S , typename C = less, typename P = identity>
auto operator() (I begin, S end_, C pred=C{}, P proj=P{}) const -> I requires sortable< I, C, P > &&random_access_iterator< I > &&sentinel_for< S, I >
 
template<typename Rng , typename C = less, typename P = identity>
auto operator() (Rng &&rng, C pred=C{}, P proj=P{}) const -> safe_iterator_t< Rng > requires sortable< iterator_t< Rng >, C, P > &&random_access_range< Rng >
 

Static Public Member Functions

template<typename I , typename D , typename C , typename P >
static void chunk_insertion_sort (I begin, I end, D chunk_size, C &pred, P &proj)
 
template<typename I , typename C , typename P >
static void inplace_stable_sort (I begin, I end, C &pred, P &proj)
 
static constexpr int merge_sort_chunk_size ()
 
template<typename I1 , typename I2 , typename D , typename C , typename P >
static void merge_sort_loop (I1 begin, I1 end, I2 result, D step_size, C &pred, P &proj)
 
template<typename I , typename V , typename C , typename P >
static void merge_sort_with_buffer (I begin, I end, V *buffer, C &pred, P &proj)
 
template<typename I , typename V , typename C , typename P >
static void stable_sort_adaptive (I begin, I end, V *buffer, std::ptrdiff_t buffer_size, C &pred, P &proj)