
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? If so, then this is also called outer_product (at least in apl that's what it's called): http://en.wikipedia.org/wiki/Outer_product I'm guessing this is also closely related to list comprehension in haskell: http://www.haskell.org/haskellwiki/List_comprehension There is some code in boost's vault which was announced on the boost developer's mailing list in December 2010. http://thread.gmane.org/gmane.comp.lib.boost.devel/211905/focus=211919 HTH. -regards, Larry