fork download
  1. #include <list>
  2. #include <ctime>
  3. #include <memory>
  4. #include <iostream>
  5.  
  6. class MyClass {
  7. public:
  8. // I added a constructor to initialize _datetime just for testing.
  9. MyClass() {
  10. time_t t = time(nullptr);
  11. _datetime = *localtime(&t);
  12. _datetime.tm_sec = rand() % 60;
  13. }
  14. tm _datetime;
  15. };
  16.  
  17. int main() {
  18. std::list<std::unique_ptr<MyClass>> classes;
  19. classes.push_back(std::unique_ptr<MyClass>(new MyClass));
  20. classes.push_back(std::unique_ptr<MyClass>(new MyClass));
  21. classes.push_back(std::unique_ptr<MyClass>(new MyClass));
  22. // C++14: classes.push_back(std::make_unique<MyClass>());
  23.  
  24. classes.sort([](std::unique_ptr<MyClass>& a, std::unique_ptr<MyClass>& b) {
  25. return mktime(&a->_datetime) < mktime(&b->_datetime);
  26. });
  27.  
  28. for (auto const &mc : classes)
  29. std::cout << asctime(&mc->_datetime);
  30.  
  31. return 0;
  32. }
Success #stdin #stdout 0s 4356KB
stdin
Standard input is empty
stdout
Mon Jul  9 12:07:43 2018
Mon Jul  9 12:07:46 2018
Mon Jul  9 12:07:57 2018