#include <vector>
#include <memory>
#include <string>
#include <iostream>
struct Myobject : std::enable_shared_from_this< Myobject >
{
int nb;
std::string name;
std::shared_ptr<Myobject> next;
Myobject(int nb, std::string name) { this->name=name; this->nb=nb; }
~Myobject() { std::cout << "deleting " << nb << " " << name << std::endl; }
};
int main() {
std::vector< std::shared_ptr< Myobject > > arr;
arr.push_back(std::make_shared< Myobject >(1,"first"));
arr.push_back(std::make_shared< Myobject >(2,"second"));
for (auto obj: arr) {
std::cout << obj->nb << " " << obj->name << std::endl;
}
arr[0]->next = arr[1];
};
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IE15b2JqZWN0IDogc3RkOjplbmFibGVfc2hhcmVkX2Zyb21fdGhpczwgTXlvYmplY3QgPgp7CiAgaW50IG5iOyAKICBzdGQ6OnN0cmluZyBuYW1lOyAKICBzdGQ6OnNoYXJlZF9wdHI8TXlvYmplY3Q+IG5leHQ7CiAgTXlvYmplY3QoaW50IG5iLCBzdGQ6OnN0cmluZyBuYW1lKSB7IHRoaXMtPm5hbWU9bmFtZTsgdGhpcy0+bmI9bmI7IH0KICB+TXlvYmplY3QoKSB7IHN0ZDo6Y291dCA8PCAiZGVsZXRpbmcgIiA8PCBuYiA8PCAiICIgPDwgbmFtZSA8PCBzdGQ6OmVuZGw7IH0KfTsKCmludCBtYWluKCkgewogICAgc3RkOjp2ZWN0b3I8IHN0ZDo6c2hhcmVkX3B0cjwgTXlvYmplY3QgPiA+IGFycjsgCiAgICBhcnIucHVzaF9iYWNrKHN0ZDo6bWFrZV9zaGFyZWQ8IE15b2JqZWN0ID4oMSwiZmlyc3QiKSk7CiAgICBhcnIucHVzaF9iYWNrKHN0ZDo6bWFrZV9zaGFyZWQ8IE15b2JqZWN0ID4oMiwic2Vjb25kIikpOwoKICAgIGZvciAoYXV0byBvYmo6IGFycikgewogICAgICAgIHN0ZDo6Y291dCA8PCBvYmotPm5iIDw8ICIgIiA8PCBvYmotPm5hbWUgPDwgc3RkOjplbmRsOwogICAgfQogICAgCiAgICBhcnJbMF0tPm5leHQgPSBhcnJbMV07Cn07