#include <iostream>
#include <map>
#include <string>
#include <utility>
#include <algorithm>
using namespace std;
map<string, int> m = {{"hello", 1}, {"world", 2}};
class notFound
{ };
string findFromInt(const int& val)
{
map<string,int>::iterator it = m.begin();
while(it != m.end())
{
if(it->second == val)
return it->first;
it++;
}
throw new notFound();
}
int findFromString(const string& str)
{
map<string,int>::iterator it = m.begin();
while(it != m.end())
{
if(it->first.compare(str) == 0)
return it->second;
it++;
}
throw new notFound();
}
int main() {
int findVal = 2;
try {
string str = findFromInt(findVal);
cout << "found: " << str;
} catch(notFound *obj) {
cout << "Value not found";
}
string findStr = "hgggllo";
try {
int val = findFromString(findStr);
cout << "found: " << val;
} catch(notFound *obj) {
cout << "Value not found";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCm1hcDxzdHJpbmcsIGludD4gbSA9IHt7ImhlbGxvIiwgMX0sIHsid29ybGQiLCAyfX07CgpjbGFzcyBub3RGb3VuZAp7IH07CgpzdHJpbmcgZmluZEZyb21JbnQoY29uc3QgaW50JiB2YWwpCnsKCW1hcDxzdHJpbmcsaW50Pjo6aXRlcmF0b3IgaXQgPSBtLmJlZ2luKCk7Cgl3aGlsZShpdCAhPSBtLmVuZCgpKQoJewoJCWlmKGl0LT5zZWNvbmQgPT0gdmFsKQoJCQlyZXR1cm4gaXQtPmZpcnN0OwoJCQoJCWl0Kys7Cgl9Cgl0aHJvdyBuZXcgbm90Rm91bmQoKTsKfQoKaW50IGZpbmRGcm9tU3RyaW5nKGNvbnN0IHN0cmluZyYgc3RyKQp7CgltYXA8c3RyaW5nLGludD46Oml0ZXJhdG9yIGl0ID0gbS5iZWdpbigpOwoJd2hpbGUoaXQgIT0gbS5lbmQoKSkKCXsKCQlpZihpdC0+Zmlyc3QuY29tcGFyZShzdHIpID09IDApCgkJCXJldHVybiBpdC0+c2Vjb25kOwoJCQkKCQlpdCsrOwoJfQoJdGhyb3cgbmV3IG5vdEZvdW5kKCk7Cn0KCgppbnQgbWFpbigpIHsKCgogICAgaW50IGZpbmRWYWwgPSAyOwogICAgdHJ5IHsKICAgIAlzdHJpbmcgc3RyID0gZmluZEZyb21JbnQoZmluZFZhbCk7CiAgICAJCiAgICAJY291dCA8PCAiZm91bmQ6ICIgPDwgc3RyOwogICAgfSBjYXRjaChub3RGb3VuZCAqb2JqKSB7CiAgICAJY291dCA8PCAiVmFsdWUgbm90IGZvdW5kIjsKICAgIH0KICAgIAogICAgCiAgICBzdHJpbmcgZmluZFN0ciA9ICJoZ2dnbGxvIjsKICAgIHRyeSB7CiAgICAJaW50IHZhbCA9IGZpbmRGcm9tU3RyaW5nKGZpbmRTdHIpOwogICAgCQogICAgCWNvdXQgPDwgImZvdW5kOiAiIDw8IHZhbDsKICAgIH0gY2F0Y2gobm90Rm91bmQgKm9iaikgewogICAgCWNvdXQgPDwgIlZhbHVlIG5vdCBmb3VuZCI7CiAgICB9CiAgICAKICAgIAoKCiAgICByZXR1cm4gMDsKfQ==