Существует ли что-то вроде std :: tie для std :: pair?

Например, с кортежами:

#include <tuple>        // std::tuple, std::make_tuple, std::tie

int num;
char letter;
std::tuple<int,char> num_letter;

num_letter = std::make_tuple(10, 'a');
std::tie(num, letter) = num_letter;  // unpack num_letter into num and letter

Есть ли что-то эквивалентное с парами?

// ...
num_letter = std::make_pair(10, 'a');
std::pair_tie(num, letter) = num_letter;

person wrhall    schedule 07.07.2015    source источник


Ответы (1)


На самом деле код для пар точно такой же, поскольку std::tuple имеет operator = с std::pair в качестве аргумента .

num_letter = std::make_pair(10, 'a');
std::tie(num, letter) = num_letter;
person lisyarus    schedule 07.07.2015
comment
@wrhall это доказывает, что вам стоит попробовать хотя бы самый очевидный вариант :) - person bolov; 07.07.2015
comment
Я смотрел на чужой код, а они перебирали элементы карты; Я надеялся, что кто-нибудь покажет мне что-то вроде галстука, но немного другое, что имело бы смысл использовать в этом случае. Я не уверен, что здесь tie на самом деле улучшает читаемость, и они собирали ссылки на константы. Так что это не совсем работает. Вопрос был скорее исследовательским, чем что-либо еще. - person wrhall; 07.07.2015
comment
Хороший. К сожалению, это не работает наоборот num_letter = std::tie(num, letter) (без преобразования из tuple<...> в pair<...>). - person alfC; 29.05.2020