Hi, I am using multi_index to keep a set of d-dimensional points, where each point is a vector inside the multi_index container.
e.g (3,5,8,9,5) is a 5-dimensional point (but this can vary and be 3-d, 7-d, etc..). I need to have the set sorted by each of the dimensions.

I can do it statically if I know in advance how many dimensions I have, but I don't know how to make dynamic to any number of dimensions.

I currently have:

 template<int N>
 struct nth_coordinate
 {
   typedef int result_type;

   int operator()(const vector<int>& x)const
   {
     return x[N];
   }
 };

 typedef multi_index_container<
   vector<int>,
   indexed_by<
     sequenced<>,
     ordered_non_unique<nth_coordinate<0> >,
     ordered_non_unique<nth_coordinate<1> >,
     ordered_non_unique<nth_coordinate<2> >,
     ordered_non_unique<nth_coordinate<3> >,
     ordered_non_unique<nth_coordinate<4> >
   >
 > multi_index_Points;

is it possible do it without explicitly saying how many indices do I need?

Also, I am trying to create a function which receives as a parameter the dimension I want to work with, but it seems that I need to explicitly say the number of the index in nth_index (it obviously needs a constant). For example:

int median (int d){
 ...
    typedef multi_index_Points::nth_index< d >::type multi_index_Points_it;    ===> I would like to pass "d" as a parameter
   ...
}

is there any workaround for this issues?

would you mind pointing me in the right direction with an example of how to do it with thelibrary?

thanks in advance...

Adan