complex — std::complex
complex — std::complex
std::complex는 **복소수(complex number)**를 나타내는 클래스 템플릿이에요. <complex> 헤더에 있어요.
실수부와 허수부를 저장하고, 복소수 연산(덧셈·곱셈·켤레·크기 등)을 제공해요.
출처: cppreference
본문
// <complex> 헤더
template< class T >
class complex; // (1)
template<> class complex<float>; // (2)
template<> class complex<double>; // (3)
template<> class complex<long double>; // (4)
cv 한정되지 않은 표준 부동 소수점 타입에 대한 std::complex 특수화는 TriviallyCopyable요구사항을 만족해요.
#include <complex>
#include <iostream>
std::complex<double> z(1.0, 2.0); // 1 + 2i
std::complex<double> w(3.0, 4.0);
std::complex<double> sum = z + w; // 4 + 6i
주요 연산
- 산술 연산 —
+,-,*,/, 단항 부호 - 멤버 함수 —
real(),imag(),abs(),arg(),norm(),conj()등 - 비교 —
==,!= - 입출력 —
operator<<,operator>> - 삼각/초월 함수 —
sin,cos,exp,log,pow등
std::complex<double> z(3, 4);
double magnitude = std::abs(z); // 5 (크기)
double phase = std::arg(z); // 위상
std::complex<double> c = std::conj(z); // 3 - 4i
z.real(5); // 실수부 설정
double r = z.real(); // 실수부 읽기
리터럴
C++14부터 std::literals로 i, il, if 접미사를 쓸 수 있어요.
using namespace std::literals;
auto z = 1.0 + 2.0i; // std::complex<double>(1.0, 2.0)
주의
- C++23부터
float/double/long double외 타입의std::complex특수화 동작은 불명시(unspecified)예요. complex는 신호 처리, 물리 시뮬레이션, 푸리에 변환 등에서 널리 사용돼요.
#include <numbers>
#include <complex>
// 오일러 공식 e^(i*pi) = -1
std::complex<double> euler = std::exp(std::complex<double>(0, std::numbers::pi));
// ≈ (-1, 0)
std::complex는 복소수 수치 연산을 타입 안전하고 직관적으로 지원하는 표준 도구예요.