#include <iostream>
#include <vector>
#include <memory>
struct Customer
{
Customer(const char* name_, int i_, int j_)
: m_name(name_), m_i(i_), m_j(j_) {}
~Customer()
{
std::cout << "~Customer(" << m_name << ")\n";
}
const char* m_name;
int m_i, m_j;
const char* getName() const noexcept { return m_name; }
int getPhone() const noexcept { return m_i; }
int getID() const noexcept { return m_j; }
};
int main()
{
std::vector<std::unique_ptr<Customer>> customers;
customers.emplace_back(std::make_unique<Customer>("Andy", 123, 111));
customers.emplace_back(std::make_unique<Customer>("Bob", 124, 222));
customers.emplace_back(std::make_unique<Customer>("Chris", 125, 333));
for (auto& ptr : customers) {
std::cout << ptr->getName() << "\n";
std::cout << ptr->getPhone() << "\n";
std::cout << ptr->getID() << "\n";
std::cout << "\n";
}
// remove the first customer
std::cout << "pop:\n";
customers.erase(customers.begin());
// remove the rest
std::cout << "clear:\n";
customers.clear();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWVtb3J5PgoKc3RydWN0IEN1c3RvbWVyCnsKCUN1c3RvbWVyKGNvbnN0IGNoYXIqIG5hbWVfLCBpbnQgaV8sIGludCBqXykKCQk6IG1fbmFtZShuYW1lXyksIG1faShpXyksIG1faihqXykge30KCX5DdXN0b21lcigpCgl7CgkJc3RkOjpjb3V0IDw8ICJ+Q3VzdG9tZXIoIiA8PCBtX25hbWUgPDwgIilcbiI7Cgl9CgoJY29uc3QgY2hhciogbV9uYW1lOwoJaW50IG1faSwgbV9qOwoKCWNvbnN0IGNoYXIqIGdldE5hbWUoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBtX25hbWU7IH0KCWludCBnZXRQaG9uZSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIG1faTsgfQoJaW50IGdldElEKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gbV9qOyB9Cn07CgppbnQgbWFpbigpCnsgICAgIAoJc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEN1c3RvbWVyPj4gY3VzdG9tZXJzOwoKCWN1c3RvbWVycy5lbXBsYWNlX2JhY2soc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21lcj4oIkFuZHkiLCAxMjMsIDExMSkpOwoJY3VzdG9tZXJzLmVtcGxhY2VfYmFjayhzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbWVyPigiQm9iIiwgMTI0LCAyMjIpKTsKCWN1c3RvbWVycy5lbXBsYWNlX2JhY2soc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21lcj4oIkNocmlzIiwgMTI1LCAzMzMpKTsKCglmb3IgKGF1dG8mIHB0ciA6IGN1c3RvbWVycykgewoJCXN0ZDo6Y291dCA8PCBwdHItPmdldE5hbWUoKSA8PCAiXG4iOwoJCXN0ZDo6Y291dCA8PCBwdHItPmdldFBob25lKCkgPDwgIlxuIjsKCQlzdGQ6OmNvdXQgPDwgcHRyLT5nZXRJRCgpIDw8ICJcbiI7CgkJc3RkOjpjb3V0IDw8ICJcbiI7Cgl9CgoJLy8gcmVtb3ZlIHRoZSBmaXJzdCBjdXN0b21lcgoJc3RkOjpjb3V0IDw8ICJwb3A6XG4iOwoJY3VzdG9tZXJzLmVyYXNlKGN1c3RvbWVycy5iZWdpbigpKTsKCgkvLyByZW1vdmUgdGhlIHJlc3QKCXN0ZDo6Y291dCA8PCAiY2xlYXI6XG4iOwoJY3VzdG9tZXJzLmNsZWFyKCk7Cn0=