#include <string>
#include <algorithm>
class airMap
{
public:
airMap( int, int, int,std::string);
airMap(const airMap& rhs);
airMap& operator=(const airMap& rhs);
~airMap();
private:
int dx,dy,dz;
std::string generatorName;
bool*** matrix3D;
void swap(airMap& left, airMap& right)
{
std::swap(left.dx, right.dx);
std::swap(left.dy, right.dy);
std::swap(left.dz, right.dz);
std::swap(left.matrix3D, right.matrix3D);
std::swap(left.generatorName, right.generatorName);
}
};
//Constructeurs et destructeurs
airMap::airMap(int x=0,int y=0,int z=0,std::string gen="EMPTY")
{
matrix3D=new bool**[x];
for (int i=0;i<x;i++)
{
matrix3D[i]=new bool*[y];
for (int j=0;j<y;j++)
{
matrix3D[i][j]=new bool[z];
}
}
dx=x;
dy=y;
dz=z;
generatorName=gen;
}
airMap::airMap(const airMap& rhs)
{
matrix3D=new bool**[rhs.dx];
for (int i=0;i<rhs.dx;i++)
{
matrix3D[i]=new bool*[rhs.dy];
for (int j=0;j<rhs.dy;j++)
{
matrix3D[i][j]=new bool[rhs.dz];
std::copy(&rhs.matrix3D[i][j][0], &rhs.matrix3D[i][j][0] + rhs.dz,
&matrix3D[i][j][0]);
}
}
dx=rhs.dx;
dy=rhs.dy;
dz=rhs.dz;
generatorName = rhs.generatorName;
}
airMap& airMap::operator=(const airMap& rhs)
{
if (&rhs != this)
{
airMap temp(rhs);
swap(temp, *this);
}
return *this;
}
airMap::~airMap()
{
for(int i=0;i<dx;i++)
{
for(int j=0;j<dy;j++)
{
delete[] matrix3D[i][j];
}
delete[] matrix3D[i];
}
delete[] matrix3D;
}
int main()
{
airMap a1(1,1,1,"abc");
airMap a2 = a1;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCmNsYXNzIGFpck1hcAp7CnB1YmxpYzoKICAgIGFpck1hcCggaW50LCBpbnQsIGludCxzdGQ6OnN0cmluZyk7CiAgICBhaXJNYXAoY29uc3QgYWlyTWFwJiByaHMpOwogICAgYWlyTWFwJiBvcGVyYXRvcj0oY29uc3QgYWlyTWFwJiByaHMpOwogICAgfmFpck1hcCgpOwoKcHJpdmF0ZToKCiAgICBpbnQgIGR4LGR5LGR6OwogICAgc3RkOjpzdHJpbmcgZ2VuZXJhdG9yTmFtZTsKICAgIGJvb2wqKiogbWF0cml4M0Q7CiAgICB2b2lkIHN3YXAoYWlyTWFwJiBsZWZ0LCBhaXJNYXAmIHJpZ2h0KQogICAgewogICAgCXN0ZDo6c3dhcChsZWZ0LmR4LCByaWdodC5keCk7CiAgICAJc3RkOjpzd2FwKGxlZnQuZHksIHJpZ2h0LmR5KTsKICAgIAlzdGQ6OnN3YXAobGVmdC5keiwgcmlnaHQuZHopOwogICAgCXN0ZDo6c3dhcChsZWZ0Lm1hdHJpeDNELCByaWdodC5tYXRyaXgzRCk7CiAgICAJc3RkOjpzd2FwKGxlZnQuZ2VuZXJhdG9yTmFtZSwgcmlnaHQuZ2VuZXJhdG9yTmFtZSk7CiAgICB9Cn07CgovL0NvbnN0cnVjdGV1cnMgZXQgZGVzdHJ1Y3RldXJzCmFpck1hcDo6YWlyTWFwKGludCAgeD0wLGludCAgeT0wLGludCAgej0wLHN0ZDo6c3RyaW5nIGdlbj0iRU1QVFkiKQp7CiAgICBtYXRyaXgzRD1uZXcgYm9vbCoqW3hdOwogICAgZm9yIChpbnQgaT0wO2k8eDtpKyspCiAgICB7CiAgICAgICAgbWF0cml4M0RbaV09bmV3IGJvb2wqW3ldOwogICAgICAgIGZvciAoaW50IGo9MDtqPHk7aisrKQogICAgICAgIHsKICAgICAgICAgICAgbWF0cml4M0RbaV1bal09bmV3IGJvb2xbel07CiAgICAgICAgfQogICAgfQogICAgZHg9eDsKICAgIGR5PXk7CiAgICBkej16OwogICAgZ2VuZXJhdG9yTmFtZT1nZW47Cn0KCmFpck1hcDo6YWlyTWFwKGNvbnN0IGFpck1hcCYgcmhzKQp7CiAgICBtYXRyaXgzRD1uZXcgYm9vbCoqW3Jocy5keF07CiAgICBmb3IgKGludCBpPTA7aTxyaHMuZHg7aSsrKQogICAgewogICAgICAgIG1hdHJpeDNEW2ldPW5ldyBib29sKltyaHMuZHldOwogICAgICAgIGZvciAoaW50IGo9MDtqPHJocy5keTtqKyspCiAgICAgICAgewogICAgICAgICAgICBtYXRyaXgzRFtpXVtqXT1uZXcgYm9vbFtyaHMuZHpdOwogICAgICAgICAgICBzdGQ6OmNvcHkoJnJocy5tYXRyaXgzRFtpXVtqXVswXSwgJnJocy5tYXRyaXgzRFtpXVtqXVswXSArIHJocy5keiwKICAgICAgICAgICAgICAgICAgICAgICZtYXRyaXgzRFtpXVtqXVswXSk7CiAgICAgICAgfQogICAgfQogICAgZHg9cmhzLmR4OwogICAgZHk9cmhzLmR5OwogICAgZHo9cmhzLmR6OwogICAgZ2VuZXJhdG9yTmFtZSA9IHJocy5nZW5lcmF0b3JOYW1lOwp9CgphaXJNYXAmIGFpck1hcDo6b3BlcmF0b3I9KGNvbnN0IGFpck1hcCYgcmhzKQp7CglpZiAoJnJocyAhPSB0aGlzKQoJewoJCWFpck1hcCB0ZW1wKHJocyk7CgkJc3dhcCh0ZW1wLCAqdGhpcyk7Cgl9CglyZXR1cm4gKnRoaXM7Cn0KCmFpck1hcDo6fmFpck1hcCgpCnsKICAgIGZvcihpbnQgaT0wO2k8ZHg7aSsrKQogICAgewogICAgICAgIGZvcihpbnQgaj0wO2o8ZHk7aisrKSAgIAogICAgICAgIHsKICAgICAgICAgICAgZGVsZXRlW10gbWF0cml4M0RbaV1bal07CiAgICAgICAgfQogICAgICAgIGRlbGV0ZVtdIG1hdHJpeDNEW2ldOwogICAgfQogICAgZGVsZXRlW10gbWF0cml4M0Q7Cn0KCmludCBtYWluKCkKewoJYWlyTWFwIGExKDEsMSwxLCJhYmMiKTsKCWFpck1hcCBhMiA9IGExOwp9