Ответ 1
// 1 + 2i
std::complex<double> c(1, 2);
Я хочу использовать С++ со сложными числами. Поэтому я включил #include <complex>
. Теперь я задаю вопрос: как объявить переменную? (Так что же называется форматом let say: 1 + i
?)
Заранее спасибо: -)
// 1 + 2i
std::complex<double> c(1, 2);
Конструктор std::complex
имеет два параметра:
Например:
std::complex<float> my_complex(1,1); //1 + 1i
Кроме того, С++ 11 представляет пользовательские литералы, которые позволяют нам реализовать (или быть реализованы стандартной библиотекой, как в этом С++ 14 принятое предложение) литерал для простых в использовании комплексных номеров:
constexpr std::complex<float> operator"" i(float d)
{
return std::complex<float>{0.0L,static_cast<float>( d )};
}
Вы можете использовать это следующим образом:
auto my_complex = 1i; // 0 + 1i
Попробуйте следующее:
#include <complex>
#include <iostream>
using namespace std;
int main()
{
complex<double> a = {1,2};
complex<double> b(3,4);
cout << a + b << "\n";
}
Вы определяете переменную, указав параметр шаблона и указав имя для переменной, примерно как в большинстве других шаблонов:
std::complex<double> x(1, 1);
Первым параметром для ctor является действительная часть, вторая - мнимая часть.
Начиная с С++ 14, добавлен пользовательский оператор литерала, поэтому вы можете инициализировать сложную переменную с несколько более естественным обозначением:
using namespace std::literals;
std::complex<double> c = 1.2 + 3.4i;
В этом случае (очевидно, достаточно) 1.2
- действительная часть, а 3.4
- мнимая часть.