#include <iostream>
#include <map>
#include <cstring>
using namespace std;
class ItemName
{
char name[80];
public:
ItemName(char *s) { strcpy(name, s); }
char *get() { return name; }
};
bool operator<(ItemName a, ItemName b)
{
return strcmp(a.get(), b.get()) < 0;
}
class ItemObj
{
char str[80];
public:
ItemObj(char *s) { strcpy(str, s); }
char *get() { return str; }
};
char itemdata[][80] = {
"potion", "heal HP",
"key", "unlock a door",
"lamp", "light",
};
int main() {
map<ItemName, ItemObj> items;
for(int i=0; i<3; i++) {
items.insert(
pair<ItemName, ItemObj>(
ItemName(itemdata[i*2]),
ItemObj(itemdata[i*2+1]))); // ***** pair *****
}
map<ItemName, ItemObj>::iterator p;
char str[80];
const int kMaxLoop = 5;
int nLoop = 0;
while(nLoop < kMaxLoop) {
cout << "> ";
cin >> str;
p = items.find(str);
if(p != items.end() ) {
cout << p->second.get() << endl;
} else {
cout << "unknown item." << endl;
}
nLoop++;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEl0ZW1OYW1lCnsKCWNoYXIgbmFtZVs4MF07CnB1YmxpYzoKCUl0ZW1OYW1lKGNoYXIgKnMpIHsgc3RyY3B5KG5hbWUsIHMpOyB9CgljaGFyICpnZXQoKSB7IHJldHVybiBuYW1lOyB9Cn07Cgpib29sIG9wZXJhdG9yPChJdGVtTmFtZSBhLCBJdGVtTmFtZSBiKQp7CglyZXR1cm4gc3RyY21wKGEuZ2V0KCksIGIuZ2V0KCkpIDwgMDsKfQoKY2xhc3MgSXRlbU9iagp7CgljaGFyIHN0cls4MF07CnB1YmxpYzoKCUl0ZW1PYmooY2hhciAqcykgeyBzdHJjcHkoc3RyLCBzKTsgfQoJY2hhciAqZ2V0KCkgeyByZXR1cm4gc3RyOyB9Cn07CgpjaGFyIGl0ZW1kYXRhW11bODBdID0gewoJInBvdGlvbiIsICJoZWFsIEhQIiwKCSJrZXkiLCAidW5sb2NrIGEgZG9vciIsCgkibGFtcCIsICJsaWdodCIsCn07CgoKaW50IG1haW4oKSB7CgltYXA8SXRlbU5hbWUsIEl0ZW1PYmo+IGl0ZW1zOwoJCglmb3IoaW50IGk9MDsgaTwzOyBpKyspIHsKCQlpdGVtcy5pbnNlcnQoCgkJCQlwYWlyPEl0ZW1OYW1lLCBJdGVtT2JqPigKCQkJCQlJdGVtTmFtZShpdGVtZGF0YVtpKjJdKSwKCQkJCQlJdGVtT2JqKGl0ZW1kYXRhW2kqMisxXSkpKTsJLy8gKioqKiogcGFpciAqKioqKgoJCQkJCQoJfQoJCgltYXA8SXRlbU5hbWUsIEl0ZW1PYmo+OjppdGVyYXRvciBwOwoJCgljaGFyIHN0cls4MF07Cgljb25zdCBpbnQga01heExvb3AgPSA1OwoJaW50IG5Mb29wID0gMDsKCXdoaWxlKG5Mb29wIDwga01heExvb3ApIHsKCQljb3V0IDw8ICI+ICI7CgkJY2luID4+IHN0cjsKCQlwID0gaXRlbXMuZmluZChzdHIpOwoJCWlmKHAgIT0gaXRlbXMuZW5kKCkgKSB7CgkJCWNvdXQgPDwgcC0+c2Vjb25kLmdldCgpIDw8IGVuZGw7CgkJfSBlbHNlIHsKCQkJY291dCA8PCAidW5rbm93biBpdGVtLiIgPDwgZW5kbDsKCQl9CgkJbkxvb3ArKzsKCX0KCQoJcmV0dXJuIDA7Cn0=