Pourquoi personne ne semble utiliser les tuples en C ++, que ce soit la bibliothèque Boost Tuple ou la bibliothèque standard pour TR1? J'ai lu beaucoup de code C ++ et je vois très rarement l'utilisation de tuples, mais je vois souvent beaucoup d'endroits où les tuples résoudraient de nombreux problèmes (renvoyant généralement plusieurs valeurs à partir de fonctions).
Les tuples vous permettent de faire toutes sortes de choses intéressantes comme celle-ci:
tie(a,b) = make_tuple(b,a); //swap a and b
C'est certainement mieux que ça:
temp=a;
a=b;
b=temp;
Bien sûr, vous pouvez toujours faire ceci:
swap(a,b);
Mais que faire si vous souhaitez faire pivoter trois valeurs? Vous pouvez le faire avec des tuples:
tie(a,b,c) = make_tuple(b,c,a);
Les tuples facilitent également le renvoi de plusieurs variables à partir d'une fonction, ce qui est probablement un cas beaucoup plus courant que l'échange de valeurs. Utiliser des références pour renvoyer des valeurs n'est certainement pas très élégant.
Y a-t-il de gros inconvénients aux tuples auxquels je ne pense pas? Sinon, pourquoi sont-ils rarement utilisés? Sont-ils plus lents? Ou est-ce simplement que les gens n'y sont pas habitués? Est-ce une bonne idée d'utiliser des tuples?
a = a ^ b; b = a ^ b; a = a ^ b;