#include <list>
#include <iostream>
using namespace std;

class CTest {
private:
 int m_Num;
public:
 explicit CTest(int num) : m_Num(num) {}
 int getNum() const { return m_Num; }
};
struct CTCompare : public binary_function<CTest*, CTest*, bool> {
 bool operator()(const CTest* lhs, const CTest* rhs) const {
  return lhs->getNum() < rhs->getNum();
 }
};

int main(int argc, char* argv[]){
 list<CTest*> ctests;

 for (int i = 0; i < 10; ++i) {
  ctests.push_back(new CTest(rand()));
 }
 ctests.sort(CTCompare());
 list<CTest*>::iterator end(ctests.end());
 for (list<CTest*>::iterator it(ctests.begin()); it != end; ++it) {
  cout << (*it)->getNum() << endl;
 }
 return 0;
}
//自分でdeleteしてね(w