Распаковка через std::tie в C++
Функция std::tie записывает поля кортежа в переменные, которые уже объявлены.
Функция std::tie собирает ссылки на
переданные объекты во временный кортеж, который
можно присвоить справа от знака =.
Запишем три целых, распакуем кортеж и выведем
среднее:
#include <tuple>
std::tuple<int, int, int> pack{1, 2, 3};
int a = 0;
int b = 0;
int c = 0;
std::tie(a, b, c) = pack;
std::cout << b << "\n";
Тот же прием работает с парой из std::utility.
Запишем строку и число, заранее объявим
переменные и выведем строку:
#include <tuple>
#include <utility>
#include <string>
std::pair<std::string, int> row{"item", 7};
std::string name;
int qty = 0;
std::tie(name, qty) = row;
std::cout << name << "\n";
Дан кортеж:
std::tuple<int, int> edge{4, 6};
Объявите две переменные int, распакуйте
edge через std::tie и выведите
их сумму.
Создайте std::pair<char, int> со
значениями 'm' и 11. Запишите
результат в две уже объявленные переменные
и выведите число.