Iros
 
Loading...
Searching...
No Matches
sort.h
Go to the documentation of this file.
1#pragma once
2
5
6namespace di::container {
7namespace detail {
8 struct SortFunction {
9 template<concepts::RandomAccessIterator It, concepts::SentinelFor<It> Sent, typename Comp = function::Compare,
10 typename Proj = function::Identity>
12 constexpr auto operator()(It first, Sent last, Comp comp = {}, Proj proj = {}) const -> It {
13 // FIXME: consider using quick sort instead of heap sort.
14 container::make_heap(first, last, util::ref(comp), util::ref(proj));
15 return container::sort_heap(first, last, util::ref(comp), util::ref(proj));
16 }
17
18 template<concepts::RandomAccessContainer Con, typename Comp = function::Compare,
19 typename Proj = function::Identity>
21 constexpr auto operator()(Con&& container, Comp comp = {}, Proj proj = {}) const
24 }
25 };
26}
27
28constexpr inline auto sort = detail::SortFunction {};
29}
30
31namespace di {
32using container::sort;
33}
Definition random_access_container.h:8
Definition sortable.h:11
Definition sequence.h:13
Definition sequence.h:12
constexpr auto make_heap
Definition make_heap.h:34
constexpr auto sort
Definition sort.h:28
constexpr auto end
Definition end.h:47
constexpr auto sort_heap
Definition sort_heap.h:38
constexpr auto begin
Definition begin.h:44
Conditional< concepts::BorrowedContainer< Con >, ContainerIterator< Con >, container::Dangling > BorrowedIterator
Definition borrowed_iterator.h:11
constexpr auto ref
Definition reference_wrapper.h:98
Definition zstring_parser.h:9
constexpr auto proj
Definition proj.h:59
Definition compare.h:8
Definition identity.h:7