Nano
A C++ template metaprogramming library
Classes | Namespaces | Typedefs
list_functions.hpp File Reference
#include <nano/higher_order_functions.hpp>
#include <limits>
#include <type_traits>
Include dependency graph for list_functions.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  nano::detail::search_lists< List1, List2 >
 For each element in the first list, the index of the element in the second list is searched for, if found it's added to a new list, otherwise -1 is added. More...
 
struct  nano::detail::search_lists< list< Head1, Tail1...>, list< Head2, Tail2...> >
 
struct  nano::find_common< List1, List2 >
 Finds all common elements in 2 lists and returns a zipped list of the result, where each zipped element is a index of the common element in the lists. The zips are sorted by the index of the element in the first list. For example, if there are 2 lists:

[ 0, 4, 2, 1 ] and [ 12, 1, 4, 2 ]

the returned list will be:

[ [1, 2], [2 ,3], [1, 2] ]. More...
 
struct  nano::find_common< list< Head1, Tail1...>, list< Head2, Tail2...> >
 
struct  nano::find_uncommon< List1, List2 >
 Finds all elements of the first list which are not present in the second list, and returns a new list without the common elements. For example, if there are 2 lists:

[ 2, 3, 1, 4 ] and [ 4, 5, 2 ]

the returned list will be:

[ 3, 1 ]. More...
 
struct  nano::find_uncommon< list< Head1, Tail1...>, list< Head2, Tail2...> >
 
struct  nano::find_uncommon_indices< List1, List2 >
 Finds the indices of the elements in the first list which are not present in the second list and returns a list of the index values. For example, if there are 2 lists:

[ 2, 3, 1, 4 ] and [ 4, 5, 2 ]

the returned list will be:

[ 1, 3 ]. More...
 
struct  nano::find_uncommon_indices< list< Head1, Tail1...>, list< Head2, Tail2...> >
 
struct  nano::multiplies< List, Current >
 Same as std::multiplies, but for a nano:list which can be computed at compile time - computes the product of the list elelents from the starting value. More...
 
struct  nano::multiplies< list< Head, Tail...>, Current >
 
struct  nano::multiplies< empty_list, Current >
 
struct  nano::detail::accumulate< List, Iteration, StartIndex, EndIndex, Value, Operation >
 Like std::accumulate, where the start and end indices, and the accumulation functor can be specified. More...
 
struct  nano::detail::accumulate< list< Head, Tail...>, Iteration, StartIndex, EndIndex, Value, Operation >
 
struct  nano::detail::accumulate< list< Tail...>, Iteration, StartIndex, EndIndex, Value, Operation >
 

Namespaces

 nano
 
 nano::detail
 

Typedefs

template<typename List , std::size_t StartIndex = 0, std::size_t EndIndex = std::numeric_limits<std::size_t>::max(), std::size_t StartValue = 1, template< typename...> class Operation = nano::multiply>
using nano::accumulate = detail::accumulate< List, 0, nano::size_t< StartIndex >, nano::size_t< EndIndex >, nano::size_t< StartValue >, Operation >