#include <iostream>
#include <memory>
#include <unordered_map>
#include <vector>
using namespace std;
class A{
public:
virtual void sing()=0;
protected:
virtual ~A(){std::cout<<"~A\n";};
};
class B : public A{
public:
virtual void sing(){std::cout<<"do re mi\n";};
virtual ~B(){std::cout<<"~B\n";};
};
shared_ptr<A> creatA(){
//shared_ptr<A> P=make_shared<B>();
//shared_ptr<A> P(new B());
shared_ptr<A> P(new B());
return P;
}
int main() {
typedef std::vector<shared_ptr<A>> container_type;
typedef std::vector<shared_ptr<A>>::iterator itee;
container_type cont;
for(int i=0;i<3;i++){
cont.push_back(creatA());
}
for(itee ite=cont.begin();ite!=cont.end();++ite){
(*ite)->sing();
}
// your code goes here
//shared_ptr<std::unordered_map<std::string, std::string>> ptrMapTemp = make_shared<std::unordered_map<std::string, std::string>>();
shared_ptr<std::unordered_map<std::string, std::string>> ptrMapTemp;
/*if(ptrMapTemp->empty()){
cout<<"aaa"<<endl;
}*/
std::cout<<"main\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPHZlY3Rvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY2xhc3MgQXsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIHNpbmcoKT0wOwpwcm90ZWN0ZWQ6CiAgICB2aXJ0dWFsIH5BKCl7c3RkOjpjb3V0PDwifkFcbiI7fTsKfTsKY2xhc3MgQiA6IHB1YmxpYyBBewpwdWJsaWM6CiAgICB2aXJ0dWFsIHZvaWQgc2luZygpe3N0ZDo6Y291dDw8ImRvIHJlIG1pXG4iO307CgogICAgdmlydHVhbCB+Qigpe3N0ZDo6Y291dDw8In5CXG4iO307ICAgCn07CgpzaGFyZWRfcHRyPEE+IGNyZWF0QSgpewoJLy9zaGFyZWRfcHRyPEE+IFA9bWFrZV9zaGFyZWQ8Qj4oKTsKCS8vc2hhcmVkX3B0cjxBPiBQKG5ldyBCKCkpOwoJc2hhcmVkX3B0cjxBPiBQKG5ldyBCKCkpOwoJcmV0dXJuIFA7Cn0gICAgCgoKCmludCBtYWluKCkgewoJdHlwZWRlZiBzdGQ6OnZlY3RvcjxzaGFyZWRfcHRyPEE+PiBjb250YWluZXJfdHlwZTsKCXR5cGVkZWYgc3RkOjp2ZWN0b3I8c2hhcmVkX3B0cjxBPj46Oml0ZXJhdG9yIGl0ZWU7Cgljb250YWluZXJfdHlwZSBjb250OwoJZm9yKGludCBpPTA7aTwzO2krKyl7CgkJY29udC5wdXNoX2JhY2soY3JlYXRBKCkpOwoJfQoJZm9yKGl0ZWUgaXRlPWNvbnQuYmVnaW4oKTtpdGUhPWNvbnQuZW5kKCk7KytpdGUpewoJCSgqaXRlKS0+c2luZygpOwoJfQoJCgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgkvL3NoYXJlZF9wdHI8c3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHB0ck1hcFRlbXAgPSBtYWtlX3NoYXJlZDxzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4oKTsKCQoJCXNoYXJlZF9wdHI8c3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHB0ck1hcFRlbXA7CgkvKmlmKHB0ck1hcFRlbXAtPmVtcHR5KCkpewoJCWNvdXQ8PCJhYWEiPDxlbmRsOwoJfSovCgkKCQoJc3RkOjpjb3V0PDwibWFpblxuIjsKCQoJcmV0dXJuIDA7Cn0=