1. ホーム
  2. c++

[解決済み】C++の関数から複数の値を返したい

2022-03-29 23:12:56

質問

C++の関数から複数の値を返すのに適した方法はありますか? 例えば、2つの整数を割って商と余りを返す関数を想像してください。 私がよく見る方法は、参照パラメータを使うことです。

void divide(int dividend, int divisor, int& quotient, int& remainder);

また、一方の値を返し、もう一方の値を参照パラメータで渡す方法もあります。

int divide(int dividend, int divisor, int& remainder);

もう一つの方法は、すべての結果を含む構造体を宣言し、それを返すことです。

struct divide_result {
    int quotient;
    int remainder;
};

divide_result divide(int dividend, int divisor);

一般的にこれらの方法のいずれかが好ましいのでしょうか、それとも他に案があるのでしょうか?

編集:実際のコードでは、結果が2つ以上ある場合があります。 また、それらの結果は異なるタイプである可能性があります。

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

2つの値を返すために、私は std::pair (通常typedef'd)。 あなたが見るべきは boost::tuple (C++11以降では std::tuple ) を使って、2つ以上の結果を返します。

C++ 17で構造化バインディングが導入されたことにより、このバインディングで std::tuple が標準になるはずです。