|
template<typename NullaryInvokable > |
impl::seq< impl::catch_end< NullaryInvokable > > | seq (NullaryInvokable gen_fn) |
| Adapt a generator function as InputRange . More...
|
|
template<typename Iterable > |
impl::seq< impl::refs_gen< Iterable > > | refs (Iterable &src) |
| Adapt a reference to Iterable as seq yielding reference-wrappers. More...
|
|
template<typename Iterator > |
constexpr view< Iterator > | from (Iterator it_beg, Iterator it_end) noexcept |
| Create a range-view from a pair of iterators. More...
|
|
template<typename Iterator > |
constexpr view< Iterator > | from (std::pair< Iterator, Iterator > p) noexcept |
| To enable composability of APIs returning a pair of iterators, e.g. std::equal_range. More...
|
|
template<typename Iterable , typename Iterator = typename Iterable::iterator> |
constexpr view< Iterator > | from (Iterable &src) noexcept |
| Create a range-view for a container, or an iterable that has begin and end as free functions rather than methods. More...
|
|
template<typename Iterable , typename Iterator = typename Iterable::const_iterator> |
constexpr view< Iterator > | from (const Iterable &src) noexcept |
|
template<typename Iterable , typename Iterator = typename Iterable::const_iterator> |
constexpr view< Iterator > | cfrom (const Iterable &src) noexcept |
|
template<typename Gen , typename T = typename Gen::value_type> |
any_seq_t< T > | make_typerased (impl::seq< Gen > seq) |
| Type-erase a seq . More...
|
|
impl::to_vector | to_vector () |
| Move elements of an Iterable to std::vector. More...
|
|
impl::to_seq | to_seq () |
| Wrap an Iterable , taken by value, as seq yielding elements by-move. More...
|
|
template<typename Container > |
impl::to< Container > | to (Container dest) |
| e.g. auto set_of_ints = fn::seq(...) % ... % fn::to(std::set<int>{}) ; More...
|
|
impl::counts | counts () |
| return map: value_type -> size_t More...
|
|
template<typename F > |
impl::adapt< F > | adapt (F fn) |
| Create a custom processing-stage function-object. More...
|
|
template<typename F > |
impl::transform< F > | transform (F map_fn) |
| Create a seq yielding results of applying the transform functions to input-elements. More...
|
|
template<typename Result , typename Op > |
impl::foldl< Result, Op > | foldl (Result init, Op binary_op) |
| Range-based version of c++20 (copy-free) std::accumulate More...
|
|
template<typename Op > |
impl::foldl_d< Op > | foldl_d (Op binary_op) |
| Fold-Left-with-Default: this version uses default-initialized value for init. More...
|
|
template<typename Op > |
impl::foldl_1< Op > | foldl_1 (Op binary_op) |
| Init-free version of foldl (first element is used as init); requires at least one element. More...
|
|
impl::sliding_window | sliding_window (size_t win_size) |
|
template<typename F > |
impl::for_each< F > | for_each (F fn) |
|
template<typename F2 > |
impl::for_each_adjacent< F2 > | for_each_adjacent (F2 fn2) |
|
template<typename P > |
impl::take_while< P > | take_while (P pred) |
| Yield elements until pred evaluates to false. More...
|
|
impl::take_while< impl::call_count_lt > | take_first (size_t n=1) |
| Yield first n elements. More...
|
|
impl::take_last | take_last (size_t n=1) |
| Yield last n elements. More...
|
|
template<typename P > |
impl::drop_while< P > | drop_while (P pred) |
| Drop elements until pred evaluates to false. More...
|
|
impl::drop_while< impl::call_count_lt > | drop_first (size_t n=1) |
| Drop first n elements. More...
|
|
impl::drop_last | drop_last (size_t n=1) |
| Drop last n elements. More...
|
|
template<typename P > |
impl::where< P > | where (P pred) |
| Filter elements. More...
|
|
template<typename SortedForwardRange , typename F > |
impl::where< impl::in_sorted_by< SortedForwardRange, F > > | where_in_sorted_by (const SortedForwardRange &r, F key_fn) |
|
template<typename SortedForwardRange > |
impl::where< impl::in_sorted_by< SortedForwardRange, by::identity > > | where_in_sorted (const SortedForwardRange &r) |
| Intersect with a sorted range. More...
|
|
template<typename SortedForwardRange , typename F > |
impl::where< impl::in_sorted_by< SortedForwardRange, F > > | where_not_in_sorted_by (const SortedForwardRange &r, F key_fn) |
|
template<typename SortedForwardRange > |
impl::where< impl::in_sorted_by< SortedForwardRange, by::identity > > | where_not_in_sorted (const SortedForwardRange &r) |
| Subtract a sorted range. More...
|
|
template<typename F > |
impl::where_max_by< F > | where_max_by (F key_fn) |
| Filter elements to those having maximum value of fn. More...
|
|
impl::where_max_by< by::identity > | where_max () |
|
template<typename F > |
impl::where_max_by< F > | where_min_by (F key_fn) |
|
impl::where_max_by< by::identity > | where_min () |
|
template<typename Pred > |
impl::exists_where< Pred > | exists_where (Pred p) |
|
template<typename F > |
impl::group_all_by< F > | group_all_by (F key_fn) |
| Similar to group_adjacent_by , but presorts the elements. More...
|
|
impl::group_all_by< by::identity > | group_all () |
|
template<typename F > |
impl::group_adjacent_by< F > | group_adjacent_by (F key_fn) |
| Group adjacent elements. More...
|
|
template<typename F > |
impl::group_adjacent_as_subseqs_by< F > | group_adjacent_by (F key_fn, impl::to_seq) |
| Group adjacent elements. More...
|
|
impl::group_adjacent_by< by::identity > | group_adjacent () |
|
impl::group_adjacent_as_subseqs_by< by::identity > | group_adjacent (impl::to_seq) |
|
template<typename BinaryPred > |
impl::group_adjacent_by< fn::by::identity, BinaryPred > | group_adjacent_if (BinaryPred pred2) |
| Group adjacent elements if binary predicate holds. More...
|
|
template<typename BinaryPred > |
impl::group_adjacent_as_subseqs_by< fn::by::identity, BinaryPred > | group_adjacent_if (BinaryPred pred2, impl::to_seq) |
| Group adjacent elements if binary predicate holds. More...
|
|
impl::group_adjacent_by< impl::chunker > | in_groups_of (size_t n) |
| Group adjacent elements into chunks of specified size. More...
|
|
impl::reverse | reverse () |
| Reverse the elements in the input container. More...
|
|
template<typename F > |
impl::sort_by< F, impl::stable_sort_tag > | sort_by (F key_fn) |
| stable-sort and return the input. More...
|
|
impl::sort_by< by::identity, impl::stable_sort_tag > | sort () |
| sort_by with key_fn = by::identity More...
|
|
template<typename F > |
impl::sort_by< F, impl::unstable_sort_tag > | unstable_sort_by (F key_fn) |
|
impl::sort_by< by::identity, impl::unstable_sort_tag > | unstable_sort () |
|
template<typename F > |
impl::lazy_sort_by< F > | lazy_sort_by (F key_fn) |
| Unstable lazy sort. More...
|
|
impl::lazy_sort_by< by::identity > | lazy_sort () |
| lazy_sort_by with key_fn = by::identity More...
|
|
template<typename F > |
impl::take_top_n_by< F > | take_top_n_by (size_t n, F key_fn) |
| Return top-n elements, sorted by key_fn. More...
|
|
impl::take_top_n_by< by::identity > | take_top_n (size_t n) |
| Return top-n elements, sorted by identity. More...
|
|
template<typename F > |
impl::unique_adjacent_by< F > | unique_adjacent_by (F key_fn) |
| Keep first element from every adjacently-equal run of elements. More...
|
|
impl::unique_adjacent_by< by::identity > | unique_adjacent () |
|
template<typename F > |
impl::unique_all_by< F > | unique_all_by (F key_fn) |
| Uniquefy elements globally, as-if unique_adjacent_by pre-sorted by same key. More...
|
|
impl::unique_all_by< by::identity > | unique_all () |
|
impl::concat | concat () |
| Flatten the result of group_all_by or group_adjacent_by . More...
|
|
template<typename Iterable > |
impl::append< Iterable > | append (Iterable next) |
| Yield elements of next after elements of arg. More...
|
|
template<typename Iterable , typename BinaryFn > |
impl::zip_with< Iterable, BinaryFn > | zip_with (Iterable second, BinaryFn fn) |
| Yield pairs of elements, (up to end of the shorter range) More...
|
|
template<typename BinaryFn > |
impl::zip_adjacent< BinaryFn > | zip_adjacent (BinaryFn fn) |
| Yield invocations of fn over pairs of adjacent inputs. More...
|
|
template<typename Iterable , typename BinaryFn > |
impl::cartesian_product_with< Iterable, BinaryFn > | cartesian_product_with (Iterable second, BinaryFn fn) |
|
template<typename Container , typename P > |
auto | get_unique (Container &container, P &&pred) -> decltype(*container.begin()) |
| Access unique element matching the predicate. More...
|
|
template<typename Container , typename P , typename Construct > |
auto | set_unique (Container &container, P &&pred, Construct &&con) -> decltype(*container.begin()) |
| Similar to get_unique, but end-insert an element if missing. More...
|
|
template<typename Container > |
auto | first_or_default (const Container &c) -> typename Container::value_type |
| e.g. const CConstRef<CSeq_align> aln = first_or_default( get_alns_annot(...)->Get() ); More...
|
|
template<typename Container , typename Pred > |
auto | first_or_default (const Container &c, Pred &&pred) -> typename Container::value_type |
|
template<typename Container > |
auto | last_or_default (const Container &c) -> typename Container::value_type |
|
template<typename Container , typename Pred > |
auto | last_or_default (const Container &c, Pred &&pred) -> typename Container::value_type |
|
template<typename F > |
impl::memoizer< F > | make_memoized (F fn) |
| Memoizing wrapper for non-recursive non-mutable unary lambdas (not synchronized). More...
|
|
template<typename F > |
impl::scope_guard< F > | make_scope_guard (F fn) |
| Basic scope guard - execute some code in guard`s destructor. More...
|
|
impl::async_wr | to_async (size_t queue_size=16) |
| Wrap generating seq in an async-task. More...
|
|
template<typename F > |
impl::par_transform< F, impl::std_async > | transform_in_parallel (F map_fn) |
| Parallelized version of fn::transform More...
|
|
template<typename F , typename Async > |
impl::par_transform< F, Async > | transform_in_parallel (F map_fn, Async async) |
| A version of transform_in_parallel that uses a user-provided Async (e.g. backed by a fancy work-stealing thread-pool implementation). More...
|
|
LINQ -like library of higher-order functions for data manipulation.