Warum scheint niemand in C ++ Tupel zu verwenden, auch nicht die Boost Tuple Library noch die Standardbibliothek für TR1? Ich habe viel C ++ - Code gelesen und sehe sehr selten die Verwendung von Tupeln, aber ich sehe oft viele Stellen, an denen Tupel viele Probleme lösen würden (normalerweise werden mehrere Werte von Funktionen zurückgegeben).
Mit Tupeln kannst du alle möglichen coolen Dinge wie diese machen:
tie(a,b) = make_tuple(b,a); //swap a and b
Das ist sicherlich besser als das:
temp=a;
a=b;
b=temp;
Natürlich können Sie dies immer tun:
swap(a,b);
Aber was ist, wenn Sie drei Werte drehen möchten? Sie können dies mit Tupeln tun:
tie(a,b,c) = make_tuple(b,c,a);
Tupel machen es auch viel einfacher, mehrere Variablen von einer Funktion zurückzugeben, was wahrscheinlich ein viel häufigerer Fall ist als das Austauschen von Werten. Die Verwendung von Verweisen auf Rückgabewerte ist sicherlich nicht sehr elegant.
Gibt es große Nachteile von Tupeln, an die ich nicht denke? Wenn nicht, warum werden sie selten verwendet? Sind sie langsamer? Oder sind die Leute einfach nicht an sie gewöhnt? Ist es eine gute Idee, Tupel zu verwenden?
a = a ^ b; b = a ^ b; a = a ^ b;