Функция exchange
Функция exchange заменяет значение объекта
на новое и возвращает предыдущее значение этого
объекта. В первый параметр мы передаем объект,
значение которого нужно заменить, а во второй -
новое значение, которое следует установить.
Функция объявлена в заголовочном файле
<utility> и часто используется для
реализации идиомы перемещения и обмена.
Синтаксис
std::exchange(obj, new_value)
Пример
Давайте заменим значение переменной a
на число 10 и выведем старое значение,
которое вернула функция:
#include <iostream>
#include <utility>
using namespace std;
int main()
{
int a = 5;
int old = exchange(a, 10);
cout << "old: " << old << endl;
cout << "a: " << a << endl;
return 0;
}
Результат выполнения кода:
"old: 5"
"a: 10"
Пример
Давайте обменяем значения двух строк, используя
функцию exchange и временную переменную:
#include <iostream>
#include <string>
#include <utility>
using namespace std;
int main()
{
string s1 = "abcde";
string s2 = "12345";
string temp = exchange(s1, s2);
s2 = exchange(temp, s1);
cout << "s1: " << s1 << endl;
cout << "s2: " << s2 << endl;
return 0;
}
Результат выполнения кода:
"s1: 12345"
"s2: abcde"
Пример
Давайте сбросим значение переменной b в
нуль и получим её прежнее значение:
#include <iostream>
#include <utility>
using namespace std;
int main()
{
int b = 42;
int res = exchange(b, 0);
cout << "res: " << res << endl;
cout << "b: " << b << endl;
return 0;
}
Результат выполнения кода:
"res: 42"
"b: 0"