我在网上看到几个示例,这些示例表明 std::complex 变量可以通过以下方式初始化:
std::complex<float> val(10, -2);
但是,有没有办法做类似下面的事情:
std::complex<float> val;
val.real = 10;
val.imag = -2;
最佳答案
std::complex::real
和 std::complex::imag
是真正的功能。它们可用于返回实部/虚部以及设置它们,但仍通过提供值作为参数来使用函数调用语法:
std::complex<float> val;
val.real(10);
val.imag(-2);
但是,这不叫初始化。这会更改 val
的值,该值已在代码的第一行中初始化为零。
实际上,您会看到相同的结果(在该代码之后,val
具有您期望的值),但需要更多指令,除非编译器可以优化它。由于 std::complex
是标准类型,因此编译器很可能会这样做,但您永远无法确定这一点。
关于c++ - 初始化 std::complex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15038375/