#include <list>
#include <ctime>
#include <memory>
#include <iostream>
class MyClass {
public:
// I added a constructor to initialize _datetime just for testing.
MyClass() {
time_t t = time(nullptr);
_datetime = *localtime(&t);
_datetime.tm_sec = rand() % 60;
}
tm _datetime;
};
int main() {
std::list<std::unique_ptr<MyClass>> classes;
classes.push_back(std::unique_ptr<MyClass>(new MyClass));
classes.push_back(std::unique_ptr<MyClass>(new MyClass));
classes.push_back(std::unique_ptr<MyClass>(new MyClass));
// C++14: classes.push_back(std::make_unique<MyClass>());
classes.sort([](std::unique_ptr<MyClass>& a, std::unique_ptr<MyClass>& b) {
return mktime(&a->_datetime) < mktime(&b->_datetime);
});
for (auto const &mc : classes)
std::cout << asctime(&mc->_datetime);
return 0;
}
I2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxjdGltZT4KI2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgTXlDbGFzcyB7CnB1YmxpYzoKICAgIC8vIEkgYWRkZWQgYSBjb25zdHJ1Y3RvciB0byBpbml0aWFsaXplIF9kYXRldGltZSBqdXN0IGZvciB0ZXN0aW5nLgogICAgTXlDbGFzcygpIHsKICAgICAgICB0aW1lX3QgdCA9IHRpbWUobnVsbHB0cik7CiAgICAgICAgX2RhdGV0aW1lID0gKmxvY2FsdGltZSgmdCk7CiAgICAgICAgX2RhdGV0aW1lLnRtX3NlYyA9IHJhbmQoKSAlIDYwOwogICAgfQogICAgdG0gX2RhdGV0aW1lOwp9OwoKaW50IG1haW4oKSB7CiAgICBzdGQ6Omxpc3Q8c3RkOjp1bmlxdWVfcHRyPE15Q2xhc3M+PiBjbGFzc2VzOwogICAgY2xhc3Nlcy5wdXNoX2JhY2soc3RkOjp1bmlxdWVfcHRyPE15Q2xhc3M+KG5ldyBNeUNsYXNzKSk7CiAgICBjbGFzc2VzLnB1c2hfYmFjayhzdGQ6OnVuaXF1ZV9wdHI8TXlDbGFzcz4obmV3IE15Q2xhc3MpKTsKICAgIGNsYXNzZXMucHVzaF9iYWNrKHN0ZDo6dW5pcXVlX3B0cjxNeUNsYXNzPihuZXcgTXlDbGFzcykpOwogICAgLy8gQysrMTQ6IGNsYXNzZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV91bmlxdWU8TXlDbGFzcz4oKSk7CgogICAgY2xhc3Nlcy5zb3J0KFtdKHN0ZDo6dW5pcXVlX3B0cjxNeUNsYXNzPiYgYSwgc3RkOjp1bmlxdWVfcHRyPE15Q2xhc3M+JiBiKSB7CiAgICAgICAgcmV0dXJuIG1rdGltZSgmYS0+X2RhdGV0aW1lKSA8IG1rdGltZSgmYi0+X2RhdGV0aW1lKTsKICAgIH0pOwoKICAgIGZvciAoYXV0byBjb25zdCAmbWMgOiBjbGFzc2VzKQogICAgICAgIHN0ZDo6Y291dCA8PCBhc2N0aW1lKCZtYy0+X2RhdGV0aW1lKTsKCiAgICByZXR1cm4gMDsKfQ==