Boost logo

Boost Users :

Subject: Re: [Boost-users] generate structs with all combinations of members from a given struct
From: Larry Evans (cppljevans_at_[hidden])
Date: 2010-01-30 14:35:06


On 01/30/10 00:37, Hicham Mouline wrote:
> Hello,
>
> struct params {
> double field1;
> double field2;
> double field3;
> double fiedl4;
> };
>
> I would like to generate all the types that hold any combination of the
> members of params.
[snip]

Step1:
   Create cross-product of void and {field1,field2,...}.
   This will produce a sequence of pairs:

    no_yes =
      ( (void,field1)
      , (void,field2)
      ...
      , (void,fieldn)
      )

Step2:

   Create the crosss product of all rows in no_yes.

   cross_no_yes =
     ( (void,void,..void)
     , (field1,void,...void)
     , (void,field2,void...,void)
     ...
     , (field1,field2,...fieldn)
     )

step3:

   remove all the voids in all the rows of cross_no_yes.

Since the size<no_yes> == n and each element in that row is size 2,
the cross_no_yes size would be 2^n. Then simply rm the all void row.

Not tested.


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