c++ - 初始化 std::complex

标签 c++

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

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

但是,有没有办法做类似下面的事情:

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

最佳答案

std::complex::realstd::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/

相关文章:

c++ - C++中类模板的自动编译时工厂注册

c++ - 类用作模板参数时继承方法丢失

c++ - while循环后如何继续阅读?

c++ - 创建链接列表但不会像在 cpp 中预期的那样工作

c++ - Winsock recv() 返回不正确的数据

c++ - 将文本和二进制数据连接到一个文件中

c++ - 如果将我的 'using block' 构造添加到 C++,您会预见到什么问题?

c++ - 尝试使用 cin 设置字符串问题的值时程序崩溃 >>

c++ - 带字符的全局变量

c++ - 为什么将 '*' 放在返回结构指针的函数上?