fork download
  1. #include "../Headers/std_lib_facilities.h"
  2.  
  3. struct Item
  4. {
  5. string name;
  6. int iid;
  7. double value;
  8. /* . . . */
  9. };
  10.  
  11. // how come this operator works, and I haven't addressed '\n' explicitly?
  12.  
  13. istream& operator >> (istream& is, Item& item)
  14. {
  15. string name;
  16. int iid;
  17. double value;
  18. char ch1;
  19. char ch2;
  20. is >> ch1;
  21. if (ch1 != '{')
  22. {
  23. error("Bad formmatting");
  24. }
  25. is >> name;
  26. is >> iid;
  27. is >> value;
  28. is >> ch2;
  29. if (ch2 != '}')
  30. {
  31. error("Bad formmatting");
  32. }
  33. item.name = name;
  34. item.iid = iid;
  35. item.value = value;
  36. }
  37.  
  38. void printVector(const vector<Item>& arg)
  39. {
  40. for (int i = 0; i < arg.size(); i++)
  41. {
  42. cout << arg[i].name << " " << arg[i].iid << " " << arg[i].value << endl;
  43. }
  44. }
  45.  
  46. int main()
  47. {
  48. // 1. Define a struct Item { string name; int iid; double value; /* . . . */ };, make a vector<Item>, vi, and fill it
  49. // with ten items from a file.
  50. ifstream is{"Drills.txt"};
  51. vector<Item> items;
  52. for (int i = 0; i < 10; i++)
  53. {
  54. Item temp;
  55. is >> temp;
  56. items.push_back(temp);
  57. }
  58. // 2. Sort vi by name.
  59. sort(items.begin(), items.end(), [](const Item& item1, const Item& item2) {return item1.name < item2.name; });
  60. printVector(items);
  61. cout << "--------------------------------------------------" << endl;
  62. // 3. Sort vi by iid.
  63. sort(items.begin(), items.end(), [](const Item& item1, const Item& item2) {return item1.iid < item2.iid; });
  64. printVector(items);
  65. cout << "--------------------------------------------------" << endl;
  66. // 4. Sort vi by value; print it in order of decreasing value (i.e., largest value first).
  67. sort(items.begin(), items.end(), [](const Item& item1, const Item& item2) {return item1.value > item2.value; });
  68. printVector(items);
  69. cout << "--------------------------------------------------" << endl;
  70. // 5. Insert Item('horse shoe',99,12.34) and Item('Canon S400', 9988,499.95).
  71. items.push_back(Item{"horse shoe", 99, 12.34});
  72. items.push_back(Item{"Canon S400", 9988, 499.95});
  73. // 6. Remove (erase) two Items identified by name from vi.
  74. string firstName, secondName;
  75. cin >> firstName >> secondName;
  76. for (auto it = items.begin(); it != items.end(); it++)
  77. {
  78. if ((it->name == firstName) || (it->name == secondName))
  79. {
  80. items.erase(it);
  81. }
  82. }
  83. printVector(items);
  84. cout << "--------------------------------------------------" << endl;
  85. // 7. Remove (erase) two Items identified by iid from vi.
  86. int iid1, iid2;
  87. cin >> iid1 >> iid2;
  88. for (auto it = items.begin(); it != items.end(); it++)
  89. {
  90. if ((it->iid == iid1) || (it->iid == iid2))
  91. {
  92. items.erase(it);
  93. }
  94. }
  95. printVector(items);
  96. }
  97.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:1:43: fatal error: ../Headers/std_lib_facilities.h: No such file or directory
 #include "../Headers/std_lib_facilities.h"
                                           ^
compilation terminated.
stdout
Standard output is empty