Iros
 
Loading...
Searching...
No Matches
count.h
Go to the documentation of this file.
1#pragma once
2
5#include "di/function/equal.h"
9
10namespace di::container {
11namespace detail {
13 template<concepts::InputIterator Iter, concepts::SentinelFor<Iter> Sent, typename T,
14 typename Proj = function::Identity>
16 constexpr auto operator()(Iter first, Sent last, T const& needle, Proj proj = {}) const
18 auto result = meta::IteratorSSizeType<Iter> { 0 };
19 for (; first != last; ++first) {
20 if (function::invoke(proj, *first) == needle) {
21 result++;
22 }
23 }
24 return result;
25 }
26
27 template<concepts::InputContainer Con, typename T, typename Proj = function::Identity>
28 requires(concepts::IndirectBinaryPredicate<function::Equal, meta::Projected<meta::ContainerIterator<Con>, Proj>,
29 T const*>)
30 constexpr auto operator()(Con&& container, T const& needle, Proj proj = {}) const
33 }
34 };
35}
36
37constexpr inline auto count = detail::CountFunction {};
38}
39
40namespace di {
42}
Definition indirect_binary_predicate.h:12
Definition sequence.h:13
Definition sequence.h:12
constexpr auto count
Definition count.h:37
constexpr auto end
Definition end.h:47
constexpr auto begin
Definition begin.h:44
constexpr auto invoke
Definition invoke.h:100
IteratorSSizeType< ContainerIterator< T > > ContainerSSizeType
Definition container_ssize_type.h:8
decltype(container::iterator_ssize_type(types::in_place_type< meta::RemoveCVRef< T > >)) IteratorSSizeType
Definition iterator_ssize_type.h:8
constexpr auto ref
Definition reference_wrapper.h:98
Definition zstring_parser.h:9
constexpr auto proj
Definition proj.h:59
@ T
Definition key.h:29