libostd
|
Generic algorithms for working with ranges. More...
Go to the source code of this file.
Macros | |
#define | OSTD_TEST_MODULE libostd_algorithm |
Functions | |
template<typename ForwardRange , typename Predicate > | |
ForwardRange | ostd::partition (ForwardRange range, Predicate pred) |
Partitions a range. More... | |
template<typename Predicate > | |
auto | ostd::partition (Predicate &&pred) |
A pipeable version of ostd::partition(). More... | |
template<typename InputRange , typename Predicate > | |
bool | ostd::is_partitioned (InputRange range, Predicate pred) |
Checks if a range is partitioned as in ostd::partition(). More... | |
template<typename Predicate > | |
auto | ostd::is_partitioned (Predicate &&pred) |
A pipeable version of ostd::is_partitioned(). More... | |
template<typename FiniteRandomRange , typename Compare > | |
FiniteRandomRange | ostd::sort_cmp (FiniteRandomRange range, Compare compare) |
Sorts a range given a comparison function. More... | |
template<typename Compare > | |
auto | ostd::sort_cmp (Compare &&compare) |
A pipeable version of ostd::sort_cmp(). More... | |
template<typename FiniteRandomRange > | |
FiniteRandomRange | ostd::sort (FiniteRandomRange range) |
Like ostd::sort_cmp() using std::less<ostd::range_value_t<R>>{} . | |
auto | ostd::sort () |
A pipeable version of ostd::sort(). | |
template<typename ForwardRange > | |
ForwardRange | ostd::min_element (ForwardRange range) |
Finds the smallest element in the range. More... | |
template<typename ForwardRange , typename Compare > | |
ForwardRange | ostd::min_element_cmp (ForwardRange range, Compare compare) |
Finds the smallest element in the range. More... | |
auto | ostd::min_element () |
A pipeable version of ostd::min_element(). | |
template<typename Compare > | |
auto | ostd::min_element_cmp (Compare &&compare) |
A pipeable version of ostd::min_element_cmp(). More... | |
template<typename ForwardRange > | |
ForwardRange | ostd::max_element (ForwardRange range) |
Finds the largest element in the range. More... | |
template<typename ForwardRange , typename Compare > | |
ForwardRange | ostd::max_element_cmp (ForwardRange range, Compare compare) |
Finds the largest element in the range. More... | |
auto | ostd::max_element () |
A pipeable version of ostd::max_element(). | |
template<typename Compare > | |
auto | ostd::max_element_cmp (Compare &&compare) |
A pipeable version of ostd::max_element_cmp(). More... | |
template<typename InputRange1 , typename InputRange2 > | |
bool | ostd::lexicographical_compare (InputRange1 range1, InputRange2 range2) |
Like std::lexicographical_compare(), but for ranges. More... | |
template<typename InputRange > | |
auto | ostd::lexicographical_compare (InputRange &&range) |
A pipeable version of ostd::lexicographical_compare(). More... | |
template<typename InputRange1 , typename InputRange2 , typename Compare > | |
bool | ostd::lexicographical_compare_cmp (InputRange1 range1, InputRange2 range2, Compare compare) |
Like std::lexicographical_compare(), but for ranges. More... | |
template<typename InputRange , typename Compare > | |
auto | ostd::lexicographical_compare_cmp (InputRange &&range, Compare &&compare) |
A pipeable version of ostd::lexicographical_compare_cmp(). More... | |
template<typename InputRange , typename UnaryFunction > | |
UnaryFunction | ostd::for_each (InputRange range, UnaryFunction func) |
Executes func on each element of range . More... | |
template<typename UnaryFunction > | |
auto | ostd::for_each (UnaryFunction &&func) |
A pipeable version of ostd::for_each(). More... | |
template<typename InputRange , typename Predicate > | |
bool | ostd::all_of (InputRange range, Predicate pred) |
Checks if every element of range matches pred . More... | |
template<typename Predicate > | |
auto | ostd::all_of (Predicate &&pred) |
A pipeable version of ostd::all_of(). More... | |
template<typename InputRange , typename Predicate > | |
bool | ostd::any_of (InputRange range, Predicate pred) |
Checks if any element of range matches pred . More... | |
template<typename Predicate > | |
auto | ostd::any_of (Predicate &&pred) |
A pipeable version of ostd::any_of(). More... | |
template<typename InputRange , typename Predicate > | |
bool | ostd::none_of (InputRange range, Predicate pred) |
Checks if no element of range matches pred . More... | |
template<typename Predicate > | |
auto | ostd::none_of (Predicate &&pred) |
A pipeable version of ostd::none_of(). More... | |
template<typename InputRange , typename Value > | |
InputRange | ostd::find (InputRange range, Value const &v) |
Finds v in range . More... | |
template<typename Value > | |
auto | ostd::find (Value &&v) |
A pipeable version of ostd::find(). More... | |
template<typename ForwardRange , typename Value > | |
ForwardRange | ostd::find_last (ForwardRange range, Value const &v) |
Finds the last occurence of v in range . More... | |
template<typename Value > | |
auto | ostd::find_last (Value &&v) |
A pipeable version of ostd::find_last(). More... | |
template<typename InputRange , typename Predicate > | |
InputRange | ostd::find_if (InputRange range, Predicate pred) |
Finds an element matching pred in range . More... | |
template<typename Predicate > | |
auto | ostd::find_if (Predicate &&pred) |
A pipeable version of ostd::find_if(). More... | |
template<typename InputRange , typename Predicate > | |
InputRange | ostd::find_if_not (InputRange range, Predicate pred) |
Finds an element not matching pred in range . More... | |
template<typename Predicate > | |
auto | ostd::find_if_not (Predicate &&pred) |
A pipeable version of ostd::find_if_not(). More... | |
template<typename InputRange , typename ForwardRange , typename Compare > | |
InputRange | ostd::find_one_of_cmp (InputRange range, ForwardRange values, Compare compare) |
Finds the first element matching any element in values . More... | |
template<typename ForwardRange , typename Compare > | |
auto | ostd::find_one_of_cmp (ForwardRange &&values, Compare &&compare) |
A pipeable version of ostd::find_one_of_cmp(). More... | |
template<typename InputRange , typename ForwardRange > | |
InputRange | ostd::find_one_of (InputRange range, ForwardRange values) |
Finds the first element matching any element in values . More... | |
template<typename ForwardRange > | |
auto | ostd::find_one_of (ForwardRange &&values) |
A pipeable version of ostd::find_one_of(). More... | |
template<typename InputRange , typename Value > | |
range_size_t< InputRange > | ostd::count (InputRange range, Value const &v) |
Counts the number of occurences of v in range . More... | |
template<typename Value > | |
auto | ostd::count (Value &&v) |
A pipeable version of ostd::count(). More... | |
template<typename InputRange , typename Predicate > | |
range_size_t< InputRange > | ostd::count_if (InputRange range, Predicate pred) |
Counts the number of elements matching pred in `range. More... | |
template<typename Predicate > | |
auto | ostd::count_if (Predicate &&pred) |
A pipeable version of ostd::count_if(). More... | |
template<typename InputRange , typename Predicate > | |
range_size_t< InputRange > | ostd::count_if_not (InputRange range, Predicate pred) |
Counts the number of elements not matching pred in `range. More... | |
template<typename Predicate > | |
auto | ostd::count_if_not (Predicate &&pred) |
A pipeable version of ostd::count_if_not(). More... | |
template<typename InputRange > | |
bool | ostd::equal (InputRange range1, InputRange range2) |
Checks if two ranges have equal contents. More... | |
template<typename InputRange > | |
auto | ostd::equal (InputRange &&range) |
A pipeable version of ostd::equal(). More... | |
template<typename InputRange , typename OutputRange > | |
OutputRange | ostd::copy (InputRange irange, OutputRange orange) |
Copies all elements from irange to orange . More... | |
template<typename InputRange , typename OutputRange , typename Predicate > | |
OutputRange | ostd::copy_if (InputRange irange, OutputRange orange, Predicate pred) |
Copies elements of irange matching pred into orange . More... | |
template<typename InputRange , typename OutputRange , typename Predicate > | |
OutputRange | ostd::copy_if_not (InputRange irange, OutputRange orange, Predicate pred) |
Copies elements of irange not matching pred into orange . More... | |
template<typename BidirRange > | |
void | ostd::reverse (BidirRange range) |
Reverses the order of the given range in-place. More... | |
template<typename BidirRange , typename OutputRange > | |
OutputRange | ostd::reverse_copy (BidirRange irange, OutputRange orange) |
Reverses the order of the given range into orange . More... | |
template<typename InputRange , typename Value > | |
void | ostd::fill (InputRange range, Value const &v) |
Fills the given input range with v . More... | |
template<typename InputRange , typename UnaryFunction > | |
void | ostd::generate (InputRange range, UnaryFunction gen) |
Fills the given input range with calls to gen . More... | |
template<typename InputRange1 , typename InputRange2 > | |
std::pair< InputRange1, InputRange2 > | ostd::swap_ranges (InputRange1 range1, InputRange2 range2) |
Swaps the contents of two input ranges. More... | |
template<typename InputRange , typename Value > | |
void | ostd::iota (InputRange range, Value value) |
Fills the given input range with value++ . More... | |
template<typename InputRange , typename Value > | |
Value | ostd::foldl (InputRange range, Value init) |
Left-folds the range into init . More... | |
template<typename InputRange , typename Value , typename BinaryFunction > | |
Value | ostd::foldl_f (InputRange range, Value init, BinaryFunction func) |
Left-folds the range into init . More... | |
template<typename Value > | |
auto | ostd::foldl (Value &&init) |
A pipeable version of ostd::foldl(). More... | |
template<typename Value , typename BinaryFunction > | |
auto | ostd::foldl_f (Value &&init, BinaryFunction &&func) |
A pipeable version of ostd::foldl_f(). More... | |
template<typename InputRange , typename Value > | |
Value | ostd::foldr (InputRange range, Value init) |
Right-folds the range into init . More... | |
template<typename InputRange , typename Value , typename BinaryFunction > | |
Value | ostd::foldr_f (InputRange range, Value init, BinaryFunction func) |
Right-folds the range into init . More... | |
template<typename Value > | |
auto | ostd::foldr (Value &&init) |
A pipeable version of ostd::foldr(). More... | |
template<typename Value , typename BinaryFunction > | |
auto | ostd::foldr_f (Value &&init, BinaryFunction &&func) |
A pipeable version of ostd::foldr_f(). More... | |
template<typename InputRange , typename UnaryFunction > | |
auto | ostd::map (InputRange range, UnaryFunction func) |
Gets a wrapper range that maps each item by func . More... | |
template<typename UnaryFunction > | |
auto | ostd::map (UnaryFunction &&func) |
A pipeable version of ostd::map(). More... | |
template<typename InputRange , typename Predicate > | |
auto | ostd::filter (InputRange range, Predicate pred) |
Gets a wrapper range that filters items by pred . More... | |
template<typename Predicate > | |
auto | ostd::filter (Predicate &&pred) |
A pipeable version of ostd::filter(). More... | |
Generic algorithms for working with ranges.
This file provides various algorithms that work with ranges, including partitioning, sorting, comparison, iteration, finding, filling, folding, mapping, filtering and others. It's roughly equivalent to the C++ header algorithm
, with many of the algorithms being just range-based versions of the iterator ones, but it also provides different custom algorithms.