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:

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;
};

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.

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

thanks