Advertisement
RobertDeMilo

RB5.8 Передача параметра по значению

Apr 17th, 2024
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. #include<map>
  4.  
  5. using namespace std;
  6.  
  7. ////////////////////////////////////////////////////////////////////////////////
  8. static string FindNameByYear(const map<int, string>& names, int year)
  9. {
  10.     string name;
  11.  
  12.     for (const auto& item : names)
  13.     {
  14.         if (item.first <= year)
  15.         {
  16.             name = item.second;
  17.         }
  18.         else
  19.         {
  20.             break;
  21.         }
  22.     }
  23.     return name;
  24. }
  25. ////////////////////////////////////////////////////////////////////////////////
  26. static string FindNameByYear(const map<int, string>& names, int year)
  27. {
  28.     auto iter_after = names.upper_bound(year);
  29.     string name;
  30.  
  31.     if (iter_after != names.begin())
  32.     {
  33.         name = (--iter_after)->second;
  34.     }
  35.     return name;
  36. }
  37. ////////////////////////////////////////////////////////////////////////////////
  38. class Person
  39. {
  40. public:
  41.    
  42.    /* void ChangeFirstName(int year, const string& first_name)
  43.     {                    
  44.         first_names[year] = first_name;
  45.     }*/
  46.  
  47.     /* void ChangeLastName(int year, const string& last_name)
  48.     {
  49.         last_names[year] = last_name;
  50.     }*/
  51.  
  52.     // call for temporary:  move -> move
  53.     // else: copy -> move
  54.     void ChangeFirstName(int year, string first_name)
  55.     {
  56.         first_names[year] = move(first_name);
  57.     }
  58.  
  59.     void ChangeLastName(int year, string last_name)
  60.     {
  61.         last_names[year] = move(last_name);
  62.     }
  63.    
  64.     string GetFullName(int year)
  65.     {
  66.        string first_name = FindNameByYear(first_names, year);
  67.        string last_name = FindNameByYear(last_names, year);
  68.  
  69.         if (first_name.empty() && last_name.empty())
  70.         {
  71.             return "Incognito";
  72.         }
  73.         else if (first_name.empty())
  74.         {
  75.             return last_name + " with unknown first name";
  76.         }
  77.         else if (last_name.empty())
  78.         {
  79.             return first_name + " with unknown last name";
  80.         }
  81.         else
  82.         {
  83.             return first_name + " " + last_name;
  84.         }
  85.     }
  86.  
  87. private:
  88.     map<int, string> first_names;
  89.     map<int, string> last_names;
  90. };
  91.  
  92. int main()
  93. {
  94.     Person person;
  95.     person.ChangeFirstName(2018, string("5"));
  96.    
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement