#include #include #include class MyObj { public: int val; MyObj(int v) { this->val = v; } private: }; std::vector vec; void dumpArray(std::vector& vec) { int i; fprintf(stderr,"Dump: "); for(i=0;i<99;i++) { fprintf(stderr,"<%p>", vec[i]); }; fprintf(stderr,"End Dump\n"); } int compare(class MyObj *a, class MyObj *b) { fprintf(stderr,"%p %p\n", a, b); dumpArray(vec); return b->val - a->val; } int main(void) { int i; for (i = 0; i < 99; i++) { MyObj* newobj=new MyObj(i); fprintf(stderr,"Adding %p\n", newobj); vec.push_back(newobj); } dumpArray(vec); std::sort(vec.begin(), vec.end(), compare); return 0; }