6#ifndef TRIGCOMPOSITEUTILS_COMBINATORS_H
7#define TRIGCOMPOSITEUTILS_COMBINATORS_H
41 operator bool()
const;
60 operator bool()
const;
81 operator bool()
const;
101 template<
typename ... Collections>
108 template<
typename ... Iterators>
115 operator bool()
const;
std::vector< size_t > m_current
const std::vector< size_t > & current() const
std::vector< size_t > m_maxes
CombinationGenerator(const std::initializer_list< size_t > &collectionSizes)
construct combnations maker with the sizes of collection to which it should be applied
const std::vector< size_t > & operator()() const
returns current combination
void operator++()
moves to the next combination
void add(size_t nextColl)
CombinationGenerator m_generator
void operator()(Iterators ... iter) const
void operator++()
moves to the next combination
CombinationIterator(Collections ... coll)
An ensemble of UniqueCombinationGenerator API description.
std::vector< UniqueCombinationGenerator > m_generators
std::vector< size_t > m_current
const std::vector< size_t > & current() const
const std::vector< size_t > & operator()() const
void add(const UniqueCombinationGenerator &gen)
Generator of unique combinations (no indices are repeated) API description.
std::vector< bool > m_bitmask
const std::vector< size_t > & operator()() const
UniqueCombinationGenerator(size_t nelems, size_t comblen)
const std::vector< size_t > & current() const
std::vector< size_t > m_current
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
void elementsInUniqueCombinations(const Index2DVec &indices, std::set< size_t > &participants, const std::function< bool(const Index1DVec &)> &filter)
std::vector< Index1DVec > Index2DVec
std::vector< size_t > Index1DVec
Unique combinations for case when one can not repeat the index (i.e.
void findUniqueCombinations(const Index2DVec &indices, std::vector< std::vector< size_t > > &combinations, const std::function< bool(const Index1DVec &)> &filter)
Creates unique combinations of elements.