-3

メソッドを介して変数を割り当てる場合、変数を返す場合、または変数を指す場合、どちらが高速ですか?

ケース 1 :

関数宣言

void foo(int* number)
{
    *number = 5;
}

使用法

int main()
{
    int number;
    function(&number);
    cout << "Number: " << number;
}

ケース 2 :

関数宣言

int foo()
{
    int number = 5;
    return number;
}

使用法

int main()
{
    int number;
    number = function();
    cout << "Number: " << number;
}

PS: ケース 2 では、変数を作成してすぐに返しました。これが意味をなさないことはわかっていますが、実際のオブジェクトを初期化しているため、最初にオブジェクトを作成し、編集してから返す必要があるため、これは私が扱っている状況に最も近い例です。

4

3 に答える 3

2

変数をコピーするコストに依存します。プリミティブ型の場合、値を返します。より複雑な型については、参照を渡すことを検討するか、C++11 の移動セマンティクスを調べてください。

于 2013-08-23T21:09:00.657 に答える
1

出力パラメーター (ケース 1) を使用する利点の 1 つは、関数で複数の値を「返す」ことができることです。

void foo (int* x, int* y)
{
    *x = 5;
    *y = 4;
}

しかし、誰もがコメントで言ったように、これは C++ では C ほど重要ではありません。通常、戻り値ははるかに読みやすく、プログラムのロジックを明確に定義し、追跡しやすくします。C++ では、戻り値または参照に固執します。

于 2013-08-23T21:13:04.990 に答える
0

通常、どちらを使用するかは、パフォーマンスではなくニーズに合わせて選択する必要があります。

複数の出力がありますか?-> ポインターを使用する

入力は出力になりますか - >ポインタを使用することもできます

これら 2 つのシナリオでは、変数を返すのがより困難になります。それ以外は、パフォーマンスに関しては、変数が非常に複雑な場合にのみ変数を使用するのが良いです。そのようにすると、その超複雑なオブジェクトの代わりにポインターを渡すだけです。ただし、それ以外のパフォーマンスの向上は無視できます。

于 2013-08-23T21:13:51.573 に答える