#include <iostream>
#include <stdexcept>
using namespace std;
template <class T> class Array
{
private:
T* data;
unsigned int size;
public:
Array<T> (unsigned int x)
{
size = x;
}
const T& operator[] (int index) const
{
if (index < 0||index >= size )
throw domain_error("Array index out of bounds");
return data[index];
}
unsigned int getSize () { return size; }
void add (const T&, int index)
{
if (index < 0 || index >= size)
throw domain_error("Array index out of bounds");
else
data[index] = T();
}
void display ()
{
cout << "[" << data[0];
for (int i = 1; i < size ; ++i)
cout << " , " <<data[i];
cout << "]" << endl;
}
};
int main ()
{
Array<int> arr(10);
for (int i = 0; i <(int)arr.getSize(); ++i)
arr.add(i,i);
arr.display();
cout << arr[0] << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkZXhjZXB0PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBBcnJheQp7CnByaXZhdGU6CiAgICBUKiBkYXRhOwoJdW5zaWduZWQgaW50IHNpemU7CgpwdWJsaWM6CglBcnJheTxUPiAodW5zaWduZWQgaW50IHgpCgl7CgkJc2l6ZSA9IHg7Cgl9CgkKCWNvbnN0IFQmIG9wZXJhdG9yW10gKGludCBpbmRleCkgY29uc3QKCXsKCQlpZiAoaW5kZXggPCAwfHxpbmRleCA+PSBzaXplICkKCQkJdGhyb3cgZG9tYWluX2Vycm9yKCJBcnJheSBpbmRleCBvdXQgb2YgYm91bmRzIik7CgkJcmV0dXJuIGRhdGFbaW5kZXhdOwoJfQoKCXVuc2lnbmVkIGludCBnZXRTaXplICgpICB7IHJldHVybiBzaXplOyB9CgoJdm9pZCBhZGQgKGNvbnN0IFQmLCBpbnQgaW5kZXgpCgl7CgkJaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzaXplKQoJCQl0aHJvdyBkb21haW5fZXJyb3IoIkFycmF5IGluZGV4IG91dCBvZiBib3VuZHMiKTsKCQllbHNlCgkJCWRhdGFbaW5kZXhdID0gVCgpOwoJfQoKCQoJdm9pZCBkaXNwbGF5ICgpCgl7CgkJY291dCA8PCAiWyIgPDwgZGF0YVswXTsKCQlmb3IgKGludCBpID0gMTsgaSA8IHNpemUgOyArK2kpCgkJCWNvdXQgPDwgIiAsICIgPDxkYXRhW2ldOwoJCWNvdXQgPDwgIl0iIDw8IGVuZGw7Cgl9CgkKfTsKCmludCBtYWluICgpCnsKCUFycmF5PGludD4gYXJyKDEwKTsKCglmb3IgKGludCBpID0gMDsgaSA8KGludClhcnIuZ2V0U2l6ZSgpOyArK2kpCgkJYXJyLmFkZChpLGkpOwoKCWFyci5kaXNwbGF5KCk7CiAgICAgICAgY291dCA8PCBhcnJbMF0gPDwgZW5kbDsKCglyZXR1cm4gMDsKfQ==