Boost logo

Boost Users :

Subject: Re: [Boost-users] Iterators for the cartesian product
From: kelvSYC (kelvsyc_at_[hidden])
Date: 2011-06-13 16:06:55


On Jun 13, 2011, at 8:19 AM, Larry Evans wrote:

> On 06/13/11 06:37, kelvSYC wrote:
>> So that the wheel doesn't have to be reinvented if it's already out
>> there, is there something in boost that will take a bunch of
>> sequences (lists, say) and return a sequence containing the
>> cartesian product all of them, either as a tuple or after applying a
>> function to them?
>
>> For example, is there something in boost that will, given a bunch of
>> lists of integers, return a list of integers formed by multiplying
>> together one member from each list?
>
> To be more concrete, say you have:
>
> std::vector<int> x({1,2,3});
> std::vector<int> y({4,5});
>
> and what you want is something like:
>
> std::vector<std::vector<int> > z
> ( { { 4, 5}
> , { 8, 10}
> , { 12, 15}
> }
> };
>
> Is that about right?

No, just a straight up cartesian product. So I'd want z to be equal to

std::vector<std::vector<int>>({{1,4}, {1,5}, {2,4}, {2,5}, {3,4}, {3,5}});

Is there something in boost that will give me this sequence (or at least iterators therein?)


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net