2015-07-07 2 views
11

Например, с кортежами:Существует ли что-то вроде 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; 

ответ

27

На самом деле, код для пар точно так же, так как std::tuple имеет operator = with std::pair as an argument.

num_letter = std::make_pair(10, 'a'); 
std::tie(num, letter) = num_letter; 
+0

ooh, аккуратный. Благодарю. – wrhall

+4

@wrhall это доказывает, что вы должны хотя бы попробовать наиболее очевидный :) – bolov

+0

Я смотрел на чужой код, и они повторяли элементы карты; Я надеялся, что кто-то покажет мне что-то вроде галстука, но немного другое, что имело бы смысл использовать в этом случае. Я не уверен, что связь действительно улучшает читаемость, и они захватывают ссылки на const. Так что это не совсем так. Вопрос был более полезным, чем что-либо. – wrhall

Смежные вопросы