hi,

I am working in this problem, where I have a set of N d-dimensional points, e.g. (4,5,6,8) (2,0,4,6), are 4-d points, which I have stored in a vector of vectors.

I am trying to partition the vector of vectors according to the median value of one the dimensions.

I tried to use the stl partition method like this:

Unfortunately, it doesn't work, (or compile correctly). It seems that I have a problem with the predicate of the partition method; the bind2nd function I saw it in an example, but it worked there for just a common vector, and does not seem to work in this case.Code:// S is a vector of vectors containing the points vector < vector <int> >::iterator iter; vector < vector <int> >::iterator pos_beg = S.begin(); vector < vector <int> >::iterator pos_end = S.end(); iter = partition (pos_beg, pos_end, bind2nd( is_less(d),median) ); // "is_less" is a class I use to sort the vector of vectors according to an arbitraty dimension. // e.g. sort(S.begin(), S.end(), is_less(d)); class is_less { public: is_less(const int index = 0): i(index) {} bool operator()(const vector<int>& v1, const vector<int>& v2) { return v1[i] < v2[i]; } private: const int i; };

Would anyone know how I might solve this problem with the partition.

thanks