BRICKS
Small, useful blocks of code, to build bigger things.
Loading...
Searching...
No Matches
ranges.hpp
Go to the documentation of this file.
1#pragma once
2
4#include "detail/filter.hpp"
5#include "detail/reverse.hpp"
6#include "detail/zip.hpp"
7
8namespace bricks {
9
24template <typename Range>
25auto enumerate(Range& range)
26{
27 return detail::enumerator<Range>{range};
28}
29
44template <typename Range, typename UnaryPredicate>
45auto filter(Range& range, UnaryPredicate predicate) -> detail::filterer<Range, UnaryPredicate>
46{
47 return detail::filterer<Range, UnaryPredicate>{range, predicate};
48}
49
63template <typename Range>
64auto reverse(Range& range)
65{
66 return detail::reverser<Range>{range};
67}
68
80template <typename... Ranges>
81auto zip(Ranges&&... t)
82{
83 return detail::zipper<Ranges...>{std::forward<Ranges>(t)...};
84}
85
86} // namespace bricks
Definition algorithm.hpp:12
auto filter(Range &range, UnaryPredicate predicate) -> detail::filterer< Range, UnaryPredicate >
Filter a range.
Definition ranges.hpp:45
auto reverse(Range &range)
Create a reverse iterator from a range.
Definition ranges.hpp:64
auto zip(Ranges &&... t)
A zip iterator adapter.
Definition ranges.hpp:81
auto enumerate(Range &range)
Enumerate a range.
Definition ranges.hpp:25