fork(1) download
  1. #include <iostream>
  2. #include <map>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. class ItemName
  7. {
  8. char name[80];
  9. public:
  10. ItemName(char *s) { strcpy(name, s); }
  11. char *get() { return name; }
  12. };
  13.  
  14. bool operator<(ItemName a, ItemName b)
  15. {
  16. return strcmp(a.get(), b.get()) < 0;
  17. }
  18.  
  19. class ItemObj
  20. {
  21. char str[80];
  22. public:
  23. ItemObj(char *s) { strcpy(str, s); }
  24. char *get() { return str; }
  25. };
  26.  
  27. char itemdata[][80] = {
  28. "potion", "heal HP",
  29. "key", "unlock a door",
  30. "lamp", "light",
  31. };
  32.  
  33.  
  34. int main() {
  35. map<ItemName, ItemObj> items;
  36.  
  37. for(int i=0; i<3; i++) {
  38. items.insert(
  39. pair<ItemName, ItemObj>(
  40. ItemName(itemdata[i*2]),
  41. ItemObj(itemdata[i*2+1]))); // ***** pair *****
  42.  
  43. }
  44.  
  45. map<ItemName, ItemObj>::iterator p;
  46.  
  47. char str[80];
  48. const int kMaxLoop = 5;
  49. int nLoop = 0;
  50. while(nLoop < kMaxLoop) {
  51. cout << "> ";
  52. cin >> str;
  53. p = items.find(str);
  54. if(p != items.end() ) {
  55. cout << p->second.get() << endl;
  56. } else {
  57. cout << "unknown item." << endl;
  58. }
  59. nLoop++;
  60. }
  61.  
  62. return 0;
  63. }
Success #stdin #stdout 0s 3436KB
stdin
potion
key
lamp
stdout
> heal HP
> unlock a door
> light
> light
> light