初始化std :: complex

时间:2013-02-23 07:48:30

标签: c++

我在网上看到几个例子,表明std :: complex变量可以通过以下方式初始化:

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

但是,有没有办法做以下事情:

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

1 个答案:

答案 0 :(得分:12)

std::complex::realstd::complex::imag是实用功能。它们可用于返回实部/虚部以及设置它们,但仍然使用函数调用语法,将值作为参数提供:

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

但是,这不称为初始化。这会更改val的值,该值已在第一行代码中初始化为零。

实际上,您会看到相同的结果(在该代码之后,val具有您期望的值),但需要更多指令,除非编译器可以对此进行优化。由于std::complex是标准类型,编译器很可能会这样做,但你永远不能确定这一点。