fork download
  1. #include <string>
  2. #include <vector>
  3. #include <map>
  4. #include <set>
  5. #include <iostream>
  6. #include <list>
  7.  
  8. class Student
  9. {
  10.  
  11. public:
  12. Student();
  13. ~Student();
  14.  
  15. void setName(const std::string& p_name) { _name = p_name; }
  16. void setArrivalTime(const int p_arr_t) { _arrivalTime = p_arr_t; }
  17.  
  18. const std::string& getName() const { return _name; }
  19. const int getArrivalTime() const { return _arrivalTime; }
  20.  
  21. private:
  22. std::string _name;
  23. int _arrivalTime;
  24.  
  25. };
  26.  
  27. struct CompareStudByArrivaltime
  28. {
  29. const bool operator()(const Student* s1, const Student* s2) const;
  30. };
  31.  
  32.  
  33. Student::Student()
  34. {}
  35.  
  36. Student::~Student()
  37. {}
  38.  
  39. const bool CompareStudByArrivaltime::operator()(const Student* s1, const Student* s2) const
  40. {
  41. if (s1->getName() == s2->getName())
  42. {
  43. return false;
  44. }
  45. return (s1->getArrivalTime() < s2->getArrivalTime());
  46. }
  47.  
  48. typedef std::list<Student> StudentsPool;
  49. typedef std::set<Student*, CompareStudByArrivaltime> Students;
  50. typedef std::map<std::string, Students> SchoolStudentsMap;
  51.  
  52. SchoolStudentsMap g_school_studs;
  53. StudentsPool g_stud_pool;
  54.  
  55. Student* getStud(const std::string& n)
  56. {
  57. for (StudentsPool::iterator itr = g_stud_pool.begin(); itr != g_stud_pool.end(); ++itr)
  58. {
  59. if (itr->getName() == n)
  60. {
  61. return &(*itr);
  62. }
  63. }
  64.  
  65. return NULL;
  66. }
  67.  
  68. void initObj()
  69. {
  70. /** School 1 Record */
  71. std::string school_name = "school1";
  72.  
  73. char c1[] = { 's', 't', 'u', 'd', '1', '\0' };
  74. std::string n1(c1);
  75. //Student* s1 = new Student();
  76. Student s1;
  77. s1.setName(n1);
  78. s1.setArrivalTime(10);
  79. g_stud_pool.push_back(s1);
  80.  
  81. Student* tmp = NULL;
  82.  
  83. tmp = getStud("stud1");
  84. g_school_studs[school_name].insert(tmp);
  85.  
  86. char c2[] = { 's', 't', 'u', 'd', '2', '\0' };
  87. std::string n2(c2);
  88. Student s2;
  89. s2.setName(n2);
  90. s2.setArrivalTime(2);
  91. g_stud_pool.push_back(s2);
  92.  
  93. tmp = getStud("stud2");
  94. g_school_studs[school_name].insert(tmp);
  95.  
  96. char c3[] = { 's', 't', 'u', 'd', '3', '\0' };
  97. std::string n3(c3);
  98. Student s3;
  99. s3.setName(n3);
  100. s3.setArrivalTime(5);
  101. g_stud_pool.push_back(s3);
  102.  
  103. tmp = getStud("stud3");
  104. g_school_studs[school_name].insert(tmp);
  105. }
  106.  
  107. void processObj()
  108. {
  109. for (SchoolStudentsMap::iterator itr = g_school_studs.begin(); itr != g_school_studs.end(); ++itr)
  110. {
  111. Students& studs = itr->second;
  112.  
  113. for (Students::iterator sitr = studs.begin(); sitr != studs.end(); ++sitr)
  114. {
  115. Student* s = (*sitr);
  116. std::cerr << "Name: " << s->getName() << ", Arr Time: " << s->getArrivalTime() << std::endl;
  117. }
  118. }
  119.  
  120. }
  121.  
  122. int main(int argc, const char * argv[])
  123. {
  124.  
  125. initObj();
  126. processObj();
  127.  
  128. return 0;
  129. }
  130.  
Success #stdin #stdout #stderr 0s 3460KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Name: stud2, Arr Time: 2
Name: stud3, Arr Time: 5
Name: stud1, Arr Time: 10