2015-07-07 10 views
11

esempio con le tuple:Esiste qualcosa come std :: tie per 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 

C'è qualcosa di equivalente con coppie?

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

risposta

27

In realtà, il codice per coppie è esattamente lo stesso, poiché std::tuple ha operator = with std::pair as an argument.

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

ooh, pulito. Grazie. – wrhall

+4

@wrhall questo dimostra che dovresti almeno provare quello più ovvio :) – bolov

+0

Stavo guardando il codice di qualcun altro, e stavano iterando attraverso gli elementi di una mappa; Speravo che qualcuno mi mostrasse qualcosa di simile a una cravatta, ma leggermente diverso che avrebbe avuto senso usare in quel caso. Non sono convinto che il legame sia davvero un miglioramento della leggibilità qui, e stavano prendendo i riferimenti const. Quindi non funziona. La domanda era più esplorativa di qualsiasi altra cosa. – wrhall