1. ホーム
  2. c++

[解決済み] なぜC++ではタプルの使用が一般的ではないのですか?

2022-08-02 12:15:37

疑問点

なぜ誰も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);

タプルはまた、関数から複数の変数を返すことをより簡単にします。これはおそらく、値を交換するよりもずっと一般的なケースでしょう。値を交換するよりもはるかに一般的なケースでしょう。

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

どのように解決するのですか?

まだ標準化されていないからです。 標準でないものは、ずっと高いハードルがあります。 Boost の断片は、プログラマーがそれを切望していたために普及しました。 (hash_mapが思い浮かびます)。 しかし、タプルは便利ですが、人々がそれを気にするほど、圧倒的で明確な勝利ではありません。