BoostタプルライブラリまたはTR1の標準ライブラリのいずれかで、C ++でタプルを使用している人がいないように見えるのはなぜですか?私は多くの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);
タプルを使用すると、関数から複数の変数を返すのもはるかに簡単になります。これは、値を交換するよりもはるかに一般的なケースです。参照を使用して値を返すことは、確かにあまり洗練されていません。
私が考えていないタプルの大きな欠点はありますか?そうでない場合、なぜそれらはめったに使用されないのですか?彼らは遅いですか?それとも、人々が彼らに慣れていないというだけですか?タプルを使用するのは良い考えですか?