fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <map>
  4.  
  5. struct Person {
  6. std::string name;
  7. std::string surname;
  8. Person(const std::string& nm, const std::string& snm)
  9. :name{ nm }, surname{ snm }
  10. {}
  11. friend
  12. std::ostream& operator<<(std::ostream& out, const Person& person)
  13. {
  14. return out << person.name << ", " << person.surname << ": ";
  15. }
  16. };
  17.  
  18. struct Account {
  19. std::string bankName;
  20. double balance;
  21. Account(const std::string& bnm, double bal)
  22. :bankName{ bnm }, balance{ bal }
  23. {}
  24. friend
  25. std::ostream& operator<<(std::ostream& out, const Account& account)
  26. {
  27. return out << "Nazwa banku: " << account.bankName
  28. << ", saldo: " << account.balance;
  29. }
  30. };
  31.  
  32. struct AccCmp {
  33. bool operator()(const Person& left, const Person& right) {
  34. if (left.surname < right.surname)
  35. return true;
  36. else if (left.surname == right.surname && left.name < right.name)
  37. return true;
  38. else
  39. return false;
  40. }
  41. };
  42.  
  43. void printAccounts(const std::map<Person, Account, AccCmp>& coll)
  44. {
  45. for (auto const& item : coll) {
  46. std::cout << item.first << item.second << '\n';
  47. }
  48. }
  49.  
  50. int main()
  51. {
  52. std::map<Person, Account, AccCmp> accounts{
  53. {Person{"John", ""}, Account{"PKO", 1200}},
  54. {Person{"Marry", "Mm"}, Account{"BGZ", 1500}},
  55. {Person{"Marry", "Mmm"}, Account{"BGZ", 1800}},
  56. {Person{"Kevin", ""}, Account{"BPH", 2236.16}},
  57. {Person{"Antonio", ""}, Account{"BRE", 111.23}}
  58. };
  59. printAccounts(accounts);
  60. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
Antonio, : Nazwa banku: BRE, saldo: 111.23
John, : Nazwa banku: PKO, saldo: 1200
Kevin, : Nazwa banku: BPH, saldo: 2236.16
Marry, Mm: Nazwa banku: BGZ, saldo: 1500
Marry, Mmm: Nazwa banku: BGZ, saldo: 1800