Perché nessuno sembra usare le tuple in C ++, la libreria Boost Tuple o la libreria standard per TR1? Ho letto molto codice C ++ e molto raramente vedo l'uso delle tuple, ma vedo spesso molti posti in cui le tuple risolvono molti problemi (di solito restituiscono più valori dalle funzioni).
Le tuple ti consentono di fare tutti i tipi di cose interessanti come questa:
tie(a,b) = make_tuple(b,a); //swap a and b
Questo è sicuramente meglio di questo:
temp=a;
a=b;
b=temp;
Ovviamente potresti sempre farlo:
swap(a,b);
Ma cosa succede se si desidera ruotare tre valori? Puoi farlo con le tuple:
tie(a,b,c) = make_tuple(b,c,a);
Le tuple rendono anche molto più semplice restituire più variabili da una funzione, che è probabilmente un caso molto più comune dello scambio di valori. L'utilizzo di riferimenti per restituire valori non è certamente molto elegante.
Ci sono grossi svantaggi per le tuple a cui non sto pensando? In caso contrario, perché vengono usati raramente? Sono più lenti? O è solo che le persone non sono abituate a loro? È una buona idea usare le tuple?
a = a ^ b; b = a ^ b; a = a ^ b;