C ++でBoost Tuple LibraryまたはTR1の標準ライブラリのいずれかでタプルを使用しているように思われないのはなぜですか?多くのC ++コードを読みましたが、タプルの使用をめったに見ませんが、多くの場合、タプルが多くの問題(通常は関数から複数の値を返す)を解決する場所がたくさんあります。
タプルを使用すると、次のようなあらゆる種類の優れた操作を実行できます。
tie(a,b) = make_tuple(b,a); //swap a and b
それは確かにこれよりも優れています:
temp=a;
a=b;
b=temp;
もちろん、いつでもこれを行うことができます:
swap(a,b);
しかし、3つの値をローテーションする場合はどうでしょうか。あなたはタプルでこれを行うことができます:
tie(a,b,c) = make_tuple(b,c,a);
タプルを使用すると、関数から複数の変数を返すのがはるかに簡単になります。これは、値をスワップするよりもはるかに一般的なケースです。参照を使用して値を返すことは、確かにあまりエレガントではありません。
タプルに私が考えていない大きな欠点はありますか?そうでない場合、なぜそれらがめったに使用されないのですか?彼らは遅いですか?それとも人々が彼らに慣れていないだけですか?タプルを使用するのは良い考えですか?
a = a ^ b; b = a ^ b; a = a ^ b;