Iros
Loading...
Searching...
No Matches
is_sorted.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/container/algorithm/is_sorted_until.h
"
4
#include "
di/container/concepts/prelude.h
"
5
#include "
di/container/meta/prelude.h
"
6
#include "
di/function/compare.h
"
7
#include "
di/function/identity.h
"
8
#include "
di/util/move.h
"
9
#include "
di/util/reference_wrapper.h
"
10
11
namespace
di::container
{
12
namespace
detail
{
13
struct
IsSortedFunction
{
14
template
<concepts::ForwardIterator Iter, concepts::SentinelFor<Iter> Sent,
typename
Proj = function::Identity,
15
concepts::IndirectStrictWeakOrder<meta::Projected<Iter, Proj>> Comp = function::Compare>
16
constexpr
auto
operator()
(Iter first, Sent last, Comp comp = {}, Proj
proj
= {})
const
->
bool
{
17
return
container::is_sorted_until
(util::move(first), last,
util::ref
(comp),
util::ref
(
proj
)) == last;
18
}
19
20
template
<
concepts::ForwardContainer
Con,
typename
Proj =
function::Identity
,
21
concepts::IndirectStrictWeakOrder<meta::Projected<meta::ContainerIterator<Con>
, Proj>> Comp =
22
function::Compare
>
23
constexpr
auto
operator()
(Con&&
container
, Comp comp = {}, Proj
proj
= {})
const
->
bool
{
24
return
(*
this
)(
container::begin
(
container
),
container::end
(
container
),
util::ref
(comp),
util::ref
(
proj
));
25
}
26
};
27
}
28
29
constexpr
inline
auto
is_sorted
=
detail::IsSortedFunction
{};
30
}
31
32
namespace
di
{
33
using
container::is_sorted
;
34
}
di::concepts::ForwardContainer
Definition
forward_container.h:8
di::concepts::IndirectStrictWeakOrder
Definition
indirect_strict_weak_order.h:12
compare.h
identity.h
prelude.h
prelude.h
is_sorted_until.h
di::container::detail
Definition
sequence.h:13
di::container
Definition
sequence.h:12
di::container::is_sorted_until
constexpr auto is_sorted_until
Definition
is_sorted_until.h:40
di::container::is_sorted
constexpr auto is_sorted
Definition
is_sorted.h:29
di::container::end
constexpr auto end
Definition
end.h:47
di::container::begin
constexpr auto begin
Definition
begin.h:44
di::util::ref
constexpr auto ref
Definition
reference_wrapper.h:98
di
Definition
zstring_parser.h:9
di::proj
constexpr auto proj
Definition
proj.h:59
reference_wrapper.h
di::container::detail::IsSortedFunction
Definition
is_sorted.h:13
di::container::detail::IsSortedFunction::operator()
constexpr auto operator()(Con &&container, Comp comp={}, Proj proj={}) const -> bool
Definition
is_sorted.h:23
di::container::detail::IsSortedFunction::operator()
constexpr auto operator()(Iter first, Sent last, Comp comp={}, Proj proj={}) const -> bool
Definition
is_sorted.h:16
di::function::Compare
Definition
compare.h:8
di::function::Identity
Definition
identity.h:7
move.h
libs
di
include
di
container
algorithm
is_sorted.h
Generated by
1.13.0