#include <iostream>
#include <stdexcept>
const int LIMIT = 100;
class safearray
{
public:
void putel(int index, int value) { check_index(index); arr[index] = value;}
int getel(int index) const { check_index(index); return arr[index];}
private:
void check_index(int index) const
{
if (index < 0 || LIMIT <= index) {
throw std::out_of_range("bad index " + std::to_string(index) + " for safearray");
}
}
private:
int arr[LIMIT];
};
int main() {
safearray a;
const int value = 23456;
for (int index : {7, -1, 101}) {
try {
a.putel(index, value);
std::cout << "value at " << index << " is " << a.getel(index) << std::endl;
} catch (const std::exception& e) {
std::cout << "Error:" << e.what() << std::endl;
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkZXhjZXB0PgoKY29uc3QgaW50IExJTUlUID0gMTAwOwoKY2xhc3Mgc2FmZWFycmF5CnsKcHVibGljOgogICAgdm9pZCBwdXRlbChpbnQgaW5kZXgsIGludCB2YWx1ZSkgeyBjaGVja19pbmRleChpbmRleCk7IGFycltpbmRleF0gPSB2YWx1ZTt9CiAgICBpbnQgZ2V0ZWwoaW50IGluZGV4KSBjb25zdCB7IGNoZWNrX2luZGV4KGluZGV4KTsgcmV0dXJuIGFycltpbmRleF07fQoKcHJpdmF0ZToKICAgIHZvaWQgY2hlY2tfaW5kZXgoaW50IGluZGV4KSBjb25zdAogICAgewogICAgICAgIGlmIChpbmRleCA8IDAgfHwgTElNSVQgPD0gaW5kZXgpIHsKICAgICAgICAgICAgdGhyb3cgc3RkOjpvdXRfb2ZfcmFuZ2UoImJhZCBpbmRleCAiICsgc3RkOjp0b19zdHJpbmcoaW5kZXgpICsgIiBmb3Igc2FmZWFycmF5Iik7CiAgICAgICAgfQogICAgfQpwcml2YXRlOgogICAgaW50IGFycltMSU1JVF07Cn07CgppbnQgbWFpbigpIHsKICAgIHNhZmVhcnJheSBhOwogICAgY29uc3QgaW50IHZhbHVlID0gMjM0NTY7CiAgICAKICAgIGZvciAoaW50IGluZGV4IDogezcsIC0xLCAxMDF9KSB7CiAgICAJdHJ5IHsKICAgIAkJYS5wdXRlbChpbmRleCwgdmFsdWUpOwogICAgCQlzdGQ6OmNvdXQgPDwgInZhbHVlIGF0ICIgPDwgaW5kZXggPDwgIiBpcyAiIDw8IGEuZ2V0ZWwoaW5kZXgpIDw8IHN0ZDo6ZW5kbDsKICAgIAl9IGNhdGNoIChjb25zdCBzdGQ6OmV4Y2VwdGlvbiYgZSkgewogICAgCQlzdGQ6OmNvdXQgPDwgIkVycm9yOiIgPDwgZS53aGF0KCkgPDwgc3RkOjplbmRsOwogICAgCX0KICAgIH0KfQ==