C++复数,什么是正确的格式?

16 c++ numbers number-formatting

我想使用复杂数字的C++.因此我包括在内#include <complex>.现在我的问题是:如何声明一个变量?(那么调用的格式是什么1 + i呢?)

提前致谢 :-)

Ant*_*ala 16

// 1 + 2i
std::complex<double> c(1, 2);
Run Code Online (Sandbox Code Playgroud)


Man*_*726 10

构造函数std::complex有两个参数:

  • 第一个,这个数字的真实部分.
  • 第二个,具有数字的虚部.

例如:

std::complex<float> my_complex(1,1); //1 + 1i 
Run Code Online (Sandbox Code Playgroud)

此外,C++ 11引入了用户定义的文字,它允许我们实现(或由标准库实现,如在此C++ 14接受的提议中)一个易于使用的复数的文字:

constexpr std::complex<float> operator"" i(float d)
{
    return std::complex<float>{0.0L,static_cast<float>( d )};
}
Run Code Online (Sandbox Code Playgroud)

你可以使用如下:

auto my_complex = 1i; // 0 + 1i
Run Code Online (Sandbox Code Playgroud)


Jer*_*fin 8

您可以通过指定模板参数并指定变量的名称来定义变量,与大多数其他模板一样:

std::complex<double> x(1, 1);
Run Code Online (Sandbox Code Playgroud)

ctor的第一个参数是实部,第二个是虚部.

从C++ 14开始,添加了一个用户定义的文字运算符,因此您可以使用更自然的表示法初始化复杂变量:

using namespace std::literals;

std::complex<double> c = 1.2 + 3.4i;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,(显然足够)1.2是真实的部分,3.4而虚部是.


use*_*077 8

试试这个:

#include <complex>
#include <iostream>
using namespace std;
int main()
{
    complex<double> a = {1,2};
    complex<double> b(3,4);

    cout << a + b << "\n";
}
Run Code Online (Sandbox Code Playgroud)