¿Por qué nadie parece usar tuplas en C ++, ya sea Boost Tuple Library o la biblioteca estándar para TR1? He leído mucho código C ++, y muy rara vez veo el uso de tuplas, pero a menudo veo muchos lugares donde las tuplas resolverían muchos problemas (generalmente devolviendo valores múltiples de las funciones).
Las tuplas te permiten hacer todo tipo de cosas geniales como esta:
tie(a,b) = make_tuple(b,a); //swap a and b
Eso es ciertamente mejor que esto:
temp=a;
a=b;
b=temp;
Por supuesto, siempre puedes hacer esto:
swap(a,b);
Pero, ¿qué pasa si quieres rotar tres valores? Puedes hacer esto con tuplas:
tie(a,b,c) = make_tuple(b,c,a);
Las tuplas también hacen que sea mucho más fácil devolver múltiples variables de una función, lo cual es probablemente un caso mucho más común que intercambiar valores. Usar referencias a valores de retorno ciertamente no es muy elegante.
¿Hay grandes inconvenientes para las tuplas en las que no estoy pensando? Si no, ¿por qué rara vez se usan? ¿Son más lentos? ¿O es solo que la gente no está acostumbrada a ellos? ¿Es una buena idea usar tuplas?
a = a ^ b; b = a ^ b; a = a ^ b;