Advertisement
chevengur

СПРИНТ № 7 | Модель памяти в C++ | Урок 3: Указатели. Открываем доступ к памяти 1/2

Apr 12th, 2024 (edited)
997
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. #include <cassert>
  2. #include <string>
  3. #include <algorithm>
  4.  
  5. // Шаблонная функция Swap обменивает значения двух объектов одного и того же типа,
  6. // указатели на которые она принимает в качестве аргументов
  7. template <typename T>
  8. void Swap(T* value1, T* value2) {
  9.     T p = *value1;
  10.     *value1 = *value2;
  11.     *value2 = p;
  12.  
  13.     // Реализуйте тело функции самостоятельно
  14. }
  15.  
  16. int main() {
  17.     using namespace std;
  18.  
  19.     {
  20.         int x = 1;
  21.         int y = 5;
  22.  
  23.         Swap(&x, &y);
  24.         assert(x == 5);
  25.         assert(y == 1);
  26.     }
  27.  
  28.     {
  29.         string one = "one"s;
  30.         string two = "two"s;
  31.         Swap(&one, &two);
  32.         assert(one == "two"s);
  33.         assert(two == "one"s);
  34.     }
  35.  
  36.     {
  37.         // Видимость структуры Point ограничена текущим блоком
  38.         struct Point {
  39.             int x, y;
  40.         };
  41.  
  42.         Point p1{ 1, 2 };
  43.         Point p2{ 3, 4 };
  44.  
  45.         Swap(&p1, &p2);
  46.         assert(p1.x == 3 && p1.y == 4);
  47.         assert(p2.x == 1 && p2.y == 2);
  48.     }
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement