#include <iostream>
#include <vector>
#include <memory>
#include <string>
#include <list>
#include <map>
#include <vld.h>
using namespace std;
class Some{
public:
Some(){
cout << "Some" << endl;
}
~Some(){
cout << "~Some" << endl;
}
};
//class SomeClass{
//public:
// SomeClass() : i(0),f(0),d(0),c('a'),s("abc"),v(3,0),l(),m(),some(){
// cout << "SomeClass" << endl;
// m[0] = 0;
// m[1] = 1;
// m[2] = 2;
// l.push_back(1);
// l.push_back(2);
// l.push_back(3);
// }
// ~SomeClass(){
// cout << "~SomeClass" << endl;
// }
// void showMe(){
// cout << "~~~~~~showMe~~~~~~~~" << endl;
// cout << "i=" << i << endl;
// cout << "f=" << f << endl;
// cout << "d=" << d << endl;
// cout << "c=" << c << endl;
// cout << "s=" << s << endl;
// cout << "v=";
// for(int i=0;i<v.size();++i){
// cout << v[i] << " ";
// }
// cout << endl;
// cout << "m=";
// for(int i=0;i<m.size();++i){
// cout << i << " : " << m[i] << " ~ ";
// }
// cout << endl;
// cout << "l=";
// for(int i : l){
// cout << i << " ";
// }
// cout << endl;
// cout << "~~~~~~showMe~~~~~~~~" << endl;
// }
// int i;
// float f;
// double d;
// char c;
// string s;
// vector<int> v;
// map<int,int> m;
// list<int> l;
// Some some;
//};
//class SomeClass{
//public:
// SomeClass() : i(new int(0)),f(new float(0)),d(new double(0)),c(new char('a')),s(new string("abc")),v(new vector<int>(3,0)),m(new map<int,int>),l(new list<int>),some(new Some){
// cout << "SomeClass" << endl;
// (*m)[0] = 0;
// (*m)[1] = 1;
// (*m)[2] = 2;
// l->push_back(1);
// l->push_back(2);
// l->push_back(3);
// }
// ~SomeClass(){
// cout << "~SomeClass" << endl;
// delete i;
// delete f;
// delete d;
// delete c;
// delete s;
// delete v;
// delete m;
// delete l;
// delete some;
// }
// void showMe(){
// cout << "~~~~~~showMe~~~~~~~~" << endl;
// cout << "i=" << *i << endl;
// cout << "f=" << *f << endl;
// cout << "d=" << *d << endl;
// cout << "c=" << *c << endl;
// cout << "s=" << *s << endl;
// cout << "v=";
// for(int i=0;i<v->size();++i){
// cout << (*v)[i] << " ";
// }
// cout << endl;
// cout << "m=";
// for(int i=0;i<m->size();++i){
// cout << i << " : " << (*m)[i] << " ~ ";
// }
// cout << endl;
// cout << "l=";
// for(int i : *l){
// cout << i << " ";
// }
// cout << endl;
// cout << "~~~~~~showMe~~~~~~~~" << endl;
// }
// int *i;
// float *f;
// double *d;
// char *c;
// string *s;
// vector<int> *v;
// map<int,int> *m;
// list<int> *l;
// Some *some;
//};
//class SomeClass{
//public:
// SomeClass(int &i,float &f,double &d,char &c,string &s,vector<int> &v,map<int,int> &m,list<int> &l,Some &some) : i(i),f(f),d(d),c(c),s(s),v(v),m(m),l(l),some(some){
// cout << "SomeClass" << endl;
// m[0] = 0;
// m[1] = 1;
// m[2] = 2;
// l.push_back(1);
// l.push_back(2);
// l.push_back(3);
// }
// ~SomeClass(){
// cout << "~SomeClass" << endl;
// }
// void showMe(){
// cout << "~~~~~~showMe~~~~~~~~" << endl;
// cout << "i=" << i << endl;
// cout << "f=" << f << endl;
// cout << "d=" << d << endl;
// cout << "c=" << c << endl;
// cout << "s=" << s << endl;
// cout << "v=";
// for(int i=0;i<v.size();++i){
// cout << v[i] << " ";
// }
// cout << endl;
// cout << "m=";
// for(int i=0;i<m.size();++i){
// cout << i << " : " << m[i] << " ~ ";
// }
// cout << endl;
// cout << "l=";
// for(int i : l){
// cout << i << " ";
// }
// cout << endl;
// cout << "~~~~~~showMe~~~~~~~~" << endl;
// }
// int &i;
// float &f;
// double &d;
// char &c;
// string &s;
// vector<int> &v;
// map<int,int> &m;
// list<int> &l;
// Some &some;
//};
class SomeClass{
public:
SomeClass() : i(new int(0)),f(new float(0)),d(new double(0)),c(new char('a')),s(new string("abc")),v(new vector<int>(3,0)),m(new map<int,int>),l(new list<int>),some(new Some){
cout << "SomeClass" << endl;
(*m)[0] = 0;
(*m)[1] = 1;
(*m)[2] = 2;
l->push_back(1);
l->push_back(2);
l->push_back(3);
}
~SomeClass(){
cout << "~SomeClass" << endl;
}
void showMe(){
cout << "~~~~~~showMe~~~~~~~~" << endl;
cout << "i=" << *i << endl;
cout << "f=" << *f << endl;
cout << "d=" << *d << endl;
cout << "c=" << *c << endl;
cout << "s=" << *s << endl;
cout << "v=";
for(int i=0;i<v->size();++i){
cout << (*v)[i] << " ";
}
cout << endl;
cout << "m=";
for(int i=0;i<m->size();++i){
cout << i << " : " << (*m)[i] << " ~ ";
}
cout << endl;
cout << "l=";
for(int i : *l){
cout << i << " ";
}
cout << endl;
cout << "~~~~~~showMe~~~~~~~~" << endl;
}
shared_ptr<int> i;
shared_ptr<float> f;
shared_ptr<double> d;
shared_ptr<char> c;
shared_ptr<string> s;
shared_ptr<vector<int>> v;
shared_ptr<map<int,int>> m;
shared_ptr<list<int>> l;
shared_ptr<Some> some;
};
int main(){
// int i(0);
// float f(0);
// double d(0);
// char c('a');
// string s("abc");
// vector<int> v;
// map<int,int> m;
// list<int> l;
// Some some;
// SomeClass someClass(i,f,d,c,s,v,m,l,some);
SomeClass someClass;
someClass.showMe();
}