Skip to content

Latest commit

 

History

History
43 lines (38 loc) · 1008 Bytes

README.md

File metadata and controls

43 lines (38 loc) · 1008 Bytes

Combinator

Service for generating collection of subsets from passed collection(s) (std::array or std::vector).

Example:

Combinator(std::vector<int>({1, 2, 3}), 2) ≈ {
    {1, 2},
    {1, 3},
    {2, 3},
};
Permutator(std::vector<int>({1, 2, 3}), 2) ≈ {
    {1, 2},
    {1, 3},
    {2, 1},
    {2, 3},
    {3, 1},
    {3, 2},
};
MultiPermutator(std::vector<int>({1, 2, 3}), 2) ≈ {
    {1, 1},
    {2, 1},
    {3, 1},
    {1, 2},
    {2, 2},
    {3, 2},
    {1, 3},
    {2, 3},
    {3, 3},
};
Cartesian(std::vector<std::vector<int>>({std::vector<int>{1, 2}, {3, 4}})) ≈ {
    {1, 3},    
    {2, 3},
    {1, 4},
    {2, 4},
};

Works as forward-iterator and random-access-iterator, thus allows to generate arbitrary big sequenses, requiring minimum amount of memory.

Accepts collections of any objects (integers are shows as example).

Returns sets of std::array or std::vector (required type should be declared as template argument, or will be deducted from input argument).