#include <iostream>
#include <vector>
class object
{
private:
int value;
public:
object(){}
object(int value)
{
std::cout<<"object::constructor: "<< value << std::endl;
this->value = value;
}
object( const object& o )
{
std::cout<<"object::copy-constructor: " << o.value << std::endl;
this->value = o.value + 10;
}
~object()
{
std::cout<<"object::destructor: "<< value << std::endl;
}
void call()
{
std::cout<<"object::call(): begin"<<std::endl;
std::cout<<value<<std::endl;
std::cout<<"object::call(): end"<<std::endl;
}
};
int main()
{
int max = 3;
std::vector <object> OBJECTS;
for(int index = 0; index < max; index++)
{
object OBJECT(index);
std::cout<<"before push_back: capacity="<< OBJECTS.capacity() << std::endl;
OBJECTS.push_back(OBJECT);
std::cout<<"after push_back: capacity="<< OBJECTS.capacity() << std::endl;
}
for(int index = 0; index < max; index++)
OBJECTS[index].call();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKY2xhc3Mgb2JqZWN0CnsKICAgICAgICBwcml2YXRlOgoKICAgICAgICAgICAgaW50IHZhbHVlOwoKICAgICAgICBwdWJsaWM6CgogICAgICAgIG9iamVjdCgpe30KICAgICAgICBvYmplY3QoaW50IHZhbHVlKQogICAgICAgIHsKICAgICAgICAgICAgc3RkOjpjb3V0PDwib2JqZWN0Ojpjb25zdHJ1Y3RvcjogIjw8IHZhbHVlIDw8IHN0ZDo6ZW5kbDsKICAgICAgICAgICAgdGhpcy0+dmFsdWUgPSB2YWx1ZTsKICAgICAgICB9CiAgICAgICAgb2JqZWN0KCBjb25zdCBvYmplY3QmIG8gKQogICAgICAgIHsKICAgICAgICAgICBzdGQ6OmNvdXQ8PCJvYmplY3Q6OmNvcHktY29uc3RydWN0b3I6ICIgPDwgby52YWx1ZSA8PCBzdGQ6OmVuZGw7CiAgICAgICAgICAgdGhpcy0+dmFsdWUgPSBvLnZhbHVlICsgMTA7CiAgICAgICAgfQogICAgICAgIH5vYmplY3QoKQogICAgICAgIHsKICAgICAgICAgICAgc3RkOjpjb3V0PDwib2JqZWN0OjpkZXN0cnVjdG9yOiAiPDwgdmFsdWUgPDwgc3RkOjplbmRsOwogICAgICAgIH0KICAgICAgICB2b2lkIGNhbGwoKQogICAgICAgIHsKICAgICAgICAgICAgc3RkOjpjb3V0PDwib2JqZWN0OjpjYWxsKCk6IGJlZ2luIjw8c3RkOjplbmRsOwogICAgICAgICAgICBzdGQ6OmNvdXQ8PHZhbHVlPDxzdGQ6OmVuZGw7CiAgICAgICAgICAgIHN0ZDo6Y291dDw8Im9iamVjdDo6Y2FsbCgpOiBlbmQiPDxzdGQ6OmVuZGw7CiAgICAgICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBpbnQgbWF4ID0gMzsKICAgIHN0ZDo6dmVjdG9yIDxvYmplY3Q+IE9CSkVDVFM7CgogICAgZm9yKGludCBpbmRleCA9IDA7IGluZGV4IDwgbWF4OyBpbmRleCsrKQogICAgewogICAgICAgICAgICBvYmplY3QgT0JKRUNUKGluZGV4KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHN0ZDo6Y291dDw8ImJlZm9yZSBwdXNoX2JhY2s6IGNhcGFjaXR5PSI8PCBPQkpFQ1RTLmNhcGFjaXR5KCkgPDwgc3RkOjplbmRsOyAgICAgICAgICAgIAogICAgICAgICAgICBPQkpFQ1RTLnB1c2hfYmFjayhPQkpFQ1QpOwogICAgICAgICAgICBzdGQ6OmNvdXQ8PCJhZnRlciBwdXNoX2JhY2s6IGNhcGFjaXR5PSI8PCBPQkpFQ1RTLmNhcGFjaXR5KCkgPDwgc3RkOjplbmRsOwogICAgfQoKICAgIGZvcihpbnQgaW5kZXggPSAwOyBpbmRleCA8IG1heDsgaW5kZXgrKykKICAgICAgICBPQkpFQ1RTW2luZGV4XS5jYWxsKCk7CgogICAgcmV0dXJuIDA7Cn0=