Advertisement
RobertDeMilo

WB2.4 Передача параметров функций по константной ссылке

Sep 3rd, 2023 (edited)
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.01 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <chrono>
  5. #include <map>
  6.  
  7. using namespace std;
  8. using namespace std::chrono;
  9.  
  10. struct Person
  11. {
  12.     string name;
  13.     string surname;
  14.     int age;
  15. };
  16.  
  17. vector <Person> GetMoscowPopulation();
  18.  
  19. //Bad
  20. //В C++ параметры в функцию передаются по значению (полная глубокая копия)
  21. //void PrintPopulationSize(vector <Person> p)
  22. //{
  23. //  cout << "There are " << p.size() <<
  24. //      " people in Moscow" << endl;
  25. //}
  26.  
  27. //Good
  28. void PrintPopulationSize(const vector <Person>& p)
  29. {
  30.     cout << "There are " << p.size() <<
  31.         " people in Moscow" << endl;
  32. }
  33.  
  34.  
  35. int main()
  36. {
  37.     /*vector <Person> staff;
  38.     staff.push_back({ "Ivan", "Ivanov", 25 });*/
  39.  
  40.     auto start = steady_clock::now();
  41.     vector <Person> people = GetMoscowPopulation();
  42.     auto finish = steady_clock::now();
  43.  
  44.     cout << "GetMoscowPopulation "
  45.         << duration_cast<milliseconds>(finish - start).count() << "ms" << endl;
  46.  
  47.     start = steady_clock::now();
  48.     PrintPopulationSize(people);
  49.     //PrintPopulationSize(GetMoscowPopulation());
  50.     finish = steady_clock::now();
  51.  
  52.     cout << "PrintPopulationSize "
  53.         << duration_cast<milliseconds>(finish - start).count() << "ms" << endl;
  54.  
  55.     return 0;
  56. }
  57. **************************************************************************************************************
  58. 1. В С++ параметры в функцию передаются по значению (полная глубокая копия)
  59. 2. Не можем передать результат вызова одной функции в другую, если она принимает его ПРОСТО по ССЫЛКЕ!
  60.     (По константной ссылке можно принимать результат вызова других функций)
  61. 3. При передаче по константной ссылке не происходит лишнего копирования
  62. 4. К.С защищает от случайного изменения объекта
Tags: chrono
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement