C++ でタプルの使用があまり一般的でないのはなぜですか? 質問する

C++ でタプルの使用があまり一般的でないのはなぜですか? 質問する

なぜC++ではタプルを使わない人がいるのでしょうか?Boost タプルライブラリまたは 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);

タプルを使用すると、関数から複数の変数を返すこともはるかに簡単になります。これは、値を交換するよりもはるかに一般的なケースです。参照を使用して値を返すことは、確かにあまりエレガントではありません。

私が考えていないタプルの大きな欠点はありますか? そうでない場合、なぜタプルはほとんど使用されないのでしょうか? タプルは遅いのでしょうか? それとも、単に人々がタプルに慣れていないだけでしょうか? タプルを使用するのは良い考えでしょうか?

ベストアンサー1

皮肉な答えは、多くの人が C++ でプログラミングしているが、より高レベルの機能を理解していない、または使用していないということです。許可されていないからという場合もありますが、多くの人は単に試そうとしない (または理解さえしない) のです。

ブースト以外の例として、 の機能を使用する人は何人いるでしょうか<algorithm>?

言い換えれば、多くの C++ プログラマーは単に C++ コンパイラーを使用する C プログラマーであり、おそらくstd::vectorと ですstd::list。これが の使用がboost::tupleあまり一般的でない理由の 1 つです。

おすすめ記事