C++ の i++ と ++i にはパフォーマンスの違いがありますか? 質問する

C++ の i++ と ++i にはパフォーマンスの違いがありますか? 質問する

質問がありますC ではi++との間にパフォーマンスの違いはありますか?++i

C++ の答えは何ですか?

ベストアンサー1

[エグゼクティブ サマリー:++iを使用する特別な理由がない場合に使用しますi++。]

C++ の場合、答えは少し複雑になります。

iが単純型(C++クラスのインスタンスではない)の場合、C の答えは「いいえ、パフォーマンスの違いはありません」です。コンパイラがコードを生成しているため、これは当てはまります。

ただし、 がiC++ クラスのインスタンスである場合、 とi++は関数++iの 1 つを呼び出しますoperator++。これらの関数の標準的なペアを次に示します。

Foo& Foo::operator++()   // called for ++i
{
    this->data += 1;
    return *this;
}

Foo Foo::operator++(int ignored_dummy_value)   // called for i++
{
    Foo tmp(*this);   // variable "tmp" cannot be optimized away by the compiler
    ++(*this);
    return tmp;
}

コンパイラはコードを生成しているのではなく、operator++関数を呼び出しているだけなので、変数とそれに関連するコピー コンストラクターを最適化する方法はありませんtmp。コピー コンストラクターのコストが高い場合、パフォーマンスに大きな影響を与える可能性があります。

おすすめ記事