#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
class A
{
public :
A( const char * str)
{
cptr = new char [ strlen ( str) ] ;
strcpy ( cptr,str) ;
cout << "A(const char *str) called and cptr is " << cptr<< endl;
}
A( const A & a)
{
cptr = new char [ strlen ( a.cptr ) + 1 ] ;
strcpy ( this- > cptr,a.cptr ) ;
cptr[ strlen ( a.cptr ) ] = '$' ;
cptr[ strlen ( a.cptr ) + 1 ] = '\0 ' ;
cout << "A(const A &a) called and cptr is " << cptr<< endl;
}
~A( )
{
cout << "~A() called and cptr is " << cptr<< endl;
delete [ ] cptr;
}
private :
char * cptr;
} ;
int main( )
{
A a1( "1" ) ,a2( "2" ) ,a3( "3" ) ;
vector< A> Avec;
Avec.reserve ( 256 ) ;
Avec.push_back ( a1) ;
Avec.push_back ( a2) ;
Avec.push_back ( a3) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEEKewpwdWJsaWM6CiAgICBBKGNvbnN0IGNoYXIgKnN0cikKICAgIHsKICAgICAgICBjcHRyID0gbmV3IGNoYXIgW3N0cmxlbihzdHIpXTsKICAgICAgICBzdHJjcHkoY3B0cixzdHIpOwogICAgICAgIGNvdXQ8PCJBKGNvbnN0IGNoYXIgKnN0cikgY2FsbGVkIGFuZCBjcHRyIGlzICI8PGNwdHI8PGVuZGw7CiAgICB9CiAgICBBKGNvbnN0IEEgJmEpCiAgICB7CiAgICAgICAgY3B0ciA9IG5ldyBjaGFyIFtzdHJsZW4oYS5jcHRyKSsxXTsKICAgICAgICBzdHJjcHkodGhpcy0+Y3B0cixhLmNwdHIpOwogICAgICAgIGNwdHJbc3RybGVuKGEuY3B0cildID0gJyQnOwogICAgICAgIGNwdHJbc3RybGVuKGEuY3B0cikrMV0gPSAnXDAnOwogICAgICAgIGNvdXQ8PCJBKGNvbnN0IEEgJmEpIGNhbGxlZCBhbmQgY3B0ciBpcyAiPDxjcHRyPDxlbmRsOwogICAgfQogICAgfkEoKQogICAgewogICAgICAgIGNvdXQ8PCJ+QSgpIGNhbGxlZCBhbmQgY3B0ciBpcyAiPDxjcHRyPDxlbmRsOwogICAgICAgIGRlbGV0ZSBbXSBjcHRyOwogICAgfQpwcml2YXRlOgogICAgY2hhciAqY3B0cjsKfTsKCgppbnQgbWFpbigpCnsKICAgIEEgYTEoIjEiKSxhMigiMiIpLGEzKCIzIik7CiAgICB2ZWN0b3I8QT4gQXZlYzsKICAgIEF2ZWMucmVzZXJ2ZSgyNTYpOwoKICAgIEF2ZWMucHVzaF9iYWNrKGExKTsKICAgIEF2ZWMucHVzaF9iYWNrKGEyKTsKICAgIEF2ZWMucHVzaF9iYWNrKGEzKTsKfQ==