|
template<class Rng > |
auto | CppClingo::Util::copy_n (Rng const &rng, size_t n) -> std::vector< typename Rng::value_type > |
| Return a vector with the first n elements from the given one.
|
|
template<class T , class... Ts> |
auto | CppClingo::Util::make_vec (Ts &&...args) -> std::vector< T > |
| Avoids copies of initializer_lists.
|
|
template<class Container , std::input_iterator It, std::sentinel_for< It > Sent, typename Pred > |
void | CppClingo::Util::into_vec (Container &vec, It first, Sent last, Pred &&pred) |
| Map a range into a vector using a transformation function.
|
|
template<class Container , class Rng , class Pred > |
void | CppClingo::Util::into_vec (Container &vec, Rng &&rng, Pred &&pred) |
| Map a range into a vector using a transformation function.
|
|
template<class Container , std::input_iterator It, std::sentinel_for< It > Sent, typename Pred , typename... Args> |
auto | CppClingo::Util::to_vec (It begin, Sent end, Pred &&pred, Args &&...args) |
| Use a transformation function to build a vector from a range.
|
|
template<template< class, class... > class Container = std::vector, std::ranges::input_range Rng, typename Pred , typename... Args> |
auto | CppClingo::Util::to_vec (Rng &&rng, Pred pred, Args &&...args) |
| Use std::transform to build a vector.
|
|
template<class It , class Pred > |
auto | CppClingo::Util::transform_n (It begin, size_t n, Pred pred) |
| Use std::transform to build a vector.
|
|
template<class Vec , class Pred > |
auto | CppClingo::Util::erase_if (Vec &vec, Pred pred) -> size_t |
| Remove all elements from the vector matching the given predicate.
|
|
void | CppClingo::Util::unreachable () |
| C++23's std::unreachable.
|
|
template<iterable U>
requires std::is_lvalue_reference_v<U> |
| CppClingo::Util::enumerate (U &&x) -> enumerate< decltype(x.begin())> |
| Deduction guide for iterables.
|
|
template<std::forward_iterator T> |
| CppClingo::Util::enumerate (T begin, T end) -> enumerate< T > |
| Deduction guide for forward iterators.
|
|
template<std::integral T> |
| CppClingo::Util::enumerate (T end) -> enumerate< T > |
| Deduction guide for integrals.
|
|
void | CppClingo::Util::Graph::ensure_size (size_t n) |
| Ensure that the graph holds at least n nodes.
|
|
void | CppClingo::Util::Graph::add_edge (size_t u, size_t v) |
| Add an edge to the graph.
|
|
auto | CppClingo::Util::Graph::has_loop (size_t u) const -> bool |
| Check if the given vertex has a loop.
|
|
template<class Callback > |
void | CppClingo::Util::Graph::tarjan (Callback cb) |
| Compute the strongly connected components of the graph.
|
|
Generic algorithms used throughout the library.