1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #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==


