stl_util.h File Reference

CPP API: stl_util.h File Reference
stl_util.h File Reference
#include <array>
#include <concepts>
#include <numeric>
#include <vector>
#include <algorithm>
#include <utility>
#include <iterator>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <cstring>
#include <cassert>
#include <memory>
Include dependency graph for stl_util.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  mio::Range< Iterator, Sentinel >
 A range of items defined by two iterators. More...
 

Namespaces

 mio
 A collection of classes to simplify handling of matrix shapes in meta programming.
 
 mio::details
 

Typedefs

template<class T >
using mio::VectorRange = std::conditional_t< std::is_const_v< T >, typename mio::Range< typename std::vector< std::remove_const_t< T > >::const_iterator >, typename mio::Range< typename std::vector< std::remove_const_t< T > >::iterator > >
 Defines generic Range type for IterPair of a vector. More...
 

Functions

template<class Iter , class Pred >
bool mio::contains (Iter b, Iter e, Pred p)
 checks if there is an element in this range that matches a predicate More...
 
template<class U , class T >
std::unique_ptr< U > mio::dynamic_unique_ptr_cast (std::unique_ptr< T > &&base_ptr)
 converts a unique_ptr<T> to unique_ptr. More...
 
template<class T >
constexpr std::array< T, size_t(T::Count)> mio::enum_members ()
 Get an std::array that contains all members of an enum class. More...
 
template<typename T >
void mio::insert_sorted_replace (std::vector< T > &vec, T const &item)
 
template<typename T , typename Pred >
void mio::insert_sorted_replace (std::vector< T > &vec, T const &item, Pred pred)
 inserts element in a sorted vector, replacing items that are equal precondition: elements in the vector are partially sorted and unique according the predicate postcondition: same as precondition, additionally contains exactly one element that is equal to item, order of other items is preserved More...
 
template<class String , class... Strings>
std::string mio::path_join (String &&base, Strings &&... app)
 join one ore more strings with path separators. More...
 
void mio::details::path_join_rec (std::stringstream &, bool)
 breaks the recursion of path_join_rec. More...
 
template<class Head , class... Tail>
void mio::details::path_join_rec (std::stringstream &ss, bool writeSeparator, Head &&head, Tail &&... tail)
 recursive template helper function to join paths More...
 
template<class I , class S >
 mio::Range (std::pair< I, S > iterator_pair) -> Range< I, S >
 Deduction guide to correctly deduce range type when constructed from a pair. More...
 
template<class T >
 mio::Range (T &&range) -> Range< decltype(range.begin()), decltype(range.end())>
 Deduction guide to correctly deduce range type when constructed from another range. More...
 
std::ostream & mio::set_ostream_format (std::ostream &out, size_t width, size_t precision, char fill=' ')
 Adds manipulators for width, (fixed) precision and fill character to an ostream. More...
 
size_t mio::details::string_length (const char *str)
 length of a null terminated C string More...
 
template<class String >
size_t mio::details::string_length (String &&str)
 length of a string (e.g std::string) More...
 

Variables

template<class T >
concept mio::HasOstreamOperator = requires(std::ostream os, T t) { os << t; }
 Concept to check if type T has an existing stream output operator "<<". More...