4

std::complex変数が次のように初期化できることを示すいくつかの例をオンラインで見ました。

std::complex<float> val(10, -2);

しかし、次のようなことをする方法はありますか?

std::complex<float> val;
val.real = 10;
val.imag = -2;
4

1 に答える 1

12

std::complex::realstd::complex::imag実際に機能します。これらは、実数部/虚数部を返すだけでなく、それらを設定するためにも使用できますが、引数として値を指定することにより、関数呼び出し構文を使用します。

std::complex<float> val;
val.real(10);
val.imag(-2);

ただし、これは初期化とは呼ばれません。valこれにより、コードの最初の行でゼロで初期化されたの値が変更されます。

事実上、同じ結果が表示されます(そのコードの後、val期待する値が得られます)が、コンパイラーがこれを最適化できない限り、さらにいくつかの命令が必要になります。は標準タイプであるためstd::complex、コンパイラがそれを実行する可能性は非常に高いですが、これについては確信が持てません。

于 2013-02-23T08:02:21.817 に答える