#include <iostream>
#include <vector>
struct IntPtr
{
IntPtr(int n = 0) : value(new int(n)) {}
IntPtr(const IntPtr & rhs) : value(new int(*rhs.value)) {}
IntPtr & operator=(IntPtr rhs) { std::swap(value, rhs.value); }
~IntPtr() { delete value; }
int get() const { return *value; }
int * value;
};
int main()
{
std::vector<IntPtr> integers(100, -1);
for (std::vector<IntPtr>::iterator it = integers.begin(), end = integers.end(); it != end; ++it)
{
std::cout << it->get() << " ";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RydWN0IEludFB0cgp7CglJbnRQdHIoaW50IG4gPSAwKSA6IHZhbHVlKG5ldyBpbnQobikpIHt9CglJbnRQdHIoY29uc3QgSW50UHRyICYgcmhzKSA6IHZhbHVlKG5ldyBpbnQoKnJocy52YWx1ZSkpIHt9CglJbnRQdHIgJiBvcGVyYXRvcj0oSW50UHRyIHJocykgeyBzdGQ6OnN3YXAodmFsdWUsIHJocy52YWx1ZSk7IH0KCX5JbnRQdHIoKSB7IGRlbGV0ZSB2YWx1ZTsgfQoJaW50IGdldCgpIGNvbnN0IHsgcmV0dXJuICp2YWx1ZTsgfQoKCWludCAqIHZhbHVlOwp9OwoKaW50IG1haW4oKQp7CglzdGQ6OnZlY3RvcjxJbnRQdHI+IGludGVnZXJzKDEwMCwgLTEpOwoKCWZvciAoc3RkOjp2ZWN0b3I8SW50UHRyPjo6aXRlcmF0b3IgaXQgPSBpbnRlZ2Vycy5iZWdpbigpLCBlbmQgPSBpbnRlZ2Vycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQoJewoJCXN0ZDo6Y291dCA8PCBpdC0+Z2V0KCkgPDwgIiAiOwoJfQp9