#include <iostream>
#include <vector>
#include <memory>
#include <algorithm>
using namespace std;
class House {
int id;
public:
House(int i=0) : id{i} {}
int getId() const { return id; }
};
std::ostream& operator<<(std::ostream& stream, House const& house)
{
stream<<"House "<<house.getId();
return stream;
}
int main() {
// your code goes here
std::vector<std::unique_ptr<House>> houses;
houses.push_back(make_unique<House>());
houses.push_back(make_unique<House>(1));
for (int i = 0; i < houses.size(); i++)
{
cout << *houses[i]<< " is the same as " << *houses[i].get() <<endl;
}
cout << "-"<<endl;
for (auto& phouse : houses) { // phouse is a referetence to a unique_ptr
/* Do stuff using *p or p->xxx */
cout << *phouse <<endl;
}
cout << "-"<<endl;
for_each(houses.begin(), houses.end(), [](auto&p){ cout<<*p<<endl; });
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgSG91c2UgewoJaW50IGlkOyAKcHVibGljOiAKICAgIEhvdXNlKGludCBpPTApIDogaWR7aX0ge30KICAgIGludCBnZXRJZCgpIGNvbnN0IHsgcmV0dXJuIGlkOyB9Cn07CgpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBzdHJlYW0sIEhvdXNlIGNvbnN0JiBob3VzZSkKewogICAgc3RyZWFtPDwiSG91c2UgIjw8aG91c2UuZ2V0SWQoKTsgCiAgICByZXR1cm4gc3RyZWFtOwp9CgoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SG91c2U+PiBob3VzZXM7Cglob3VzZXMucHVzaF9iYWNrKG1ha2VfdW5pcXVlPEhvdXNlPigpKTsKCWhvdXNlcy5wdXNoX2JhY2sobWFrZV91bmlxdWU8SG91c2U+KDEpKTsKCglmb3IgKGludCBpID0gMDsgaSA8IGhvdXNlcy5zaXplKCk7IGkrKykKICAgIHsKICAgICAgICBjb3V0IDw8ICpob3VzZXNbaV08PCAiIGlzIHRoZSBzYW1lIGFzICIgPDwgKmhvdXNlc1tpXS5nZXQoKSA8PGVuZGw7IAogICAgfQoJY291dCA8PCAiLSI8PGVuZGw7IAoJZm9yIChhdXRvJiBwaG91c2UgOiBob3VzZXMpIHsgIC8vIHBob3VzZSBpcyBhIHJlZmVyZXRlbmNlIHRvIGEgdW5pcXVlX3B0cgogICAgIC8qIERvIHN0dWZmIHVzaW5nICAgICpwICBvciBwLT54eHggKi8KICAgICAgICAgY291dCA8PCAqcGhvdXNlIDw8ZW5kbDsgCiAgICB9Cgljb3V0IDw8ICItIjw8ZW5kbDsgCiAgICBmb3JfZWFjaChob3VzZXMuYmVnaW4oKSwgaG91c2VzLmVuZCgpLCBbXShhdXRvJnApeyBjb3V0PDwqcDw8ZW5kbDsgfSk7IAoJCglyZXR1cm4gMDsKfQ==