
On 06/13/11 15:06, kelvSYC wrote:
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.
The example I provided was meant to be an example of, as you say, "applying a function to them". In my example, that would be the std::multiply<int>() functor. The "straight up cartesian product" would be produced by using std::make_pair<int,int> as the function.
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?)
I pretty sure there is none since the thread I mentioned previously did not mention one and people replying to that thread indicated it would be desirable. -regards, Larry