std::complex<double> z1 {2, 5}; // 2 + 5i std::complex<double> z; // Default parameter values, are 0 so 0 + 0i它也有拷貝建構函式,因此可以按如下方式複製 z1:
std::complex<double> z2 {z1}; // 2 + 5i顯然,我們需要複數常數以及複數物件,名稱空間 std::literals::complex_literals 中定義了 3 個運算子函數,在這個名稱空間中,名稱空間 literals 和 complex_literals 都是內聯定義的。在對 std::literals::complex_literals、std::literals 或 std::complex_literals 使用 using 指令之後,就可以存取用於複數常數的運算子函數。假設使用了一個或多個這種指令,並且 using std::complex 對這一節餘下的程式碼都有效。
z = 5.0 + 3i; // z is now complex<double>{5, 3}這展示了如何定義兩部分都是非零值的複數,並順便說明已經為複數物件實現了賦值運算子。可以對 complex<float> 常數使用字尾if,對 complex<long double> 常數使用字尾il,例如 22if 或 3.5il。這些字尾是由函數 operator""if() 和 operator""il() 定義的。注意,不能寫成 1.0+i 或 2.0+il,因為這裡的 i 和 il 會被解釋為變數名,必須寫成 1.0 +li 和 2.0+1.0il。
complex<double> z{1.5, -2.5}; // z: 1.5 - 2.5i z.imag(99); // z: 1.5 + 99.0i z.real(-4.5); // z: -4.5 + 99.0i std::cout << "Real part: " << z.real()<< " Imaginary part: " << z.imag()<< std::endl; // Real part: -4.5 Imaginary part: 99real() 和 imag() 接受引數的版本什麼都不會返回。
complex<double> z1, z2, z3; // 3 default objects 0+0i std:: cout << "Enter 3 complex numbers: "; std::cin >> z1 >> z2 >> z3; // Read 3 complex numbers std::cout << " z1 = " << z1 <<" z2 = " << z2 << " z3 = "<< z3 << std::endl;下面是範例的輸入和輸出結果:
Enter 3 complex numbers: -4 (6) (-3, 7)
z1 = (-4,0) z2 = (6,0) z3 = (-3,7)
complex<double> z {1,2}; // 1+2i auto z1 = z + 3.0; // 4+2i auto z2 = z*z + (2.0 + 4i); // -1+8i auto z3 = z1 - z2; // 5-6i z3 /= z2; // 815385-0.523077i注意,複數物件和數值常數之間的運算需要數值常數是正確的型別。不能將整數常數加到 complex<double> 物件上;為了能夠進行這個運算,必須寫成 2.0。
complex<double> z1 {3,4}; // 3+4i complex<double> z2 {4,-3}; // 4-3i std::cout << std::boolalpha<<(z1 == z2) << " " // false << (z1 != (3.0 + 4i)) << " " // false << (z2 == 4.0 - 3i) << 'n'; // true註釋中的結果很清楚。注意在最後一個比較中,編譯器會將 4.0-3i 看作複數。
std::cout << std::boolalpha << (std::abs(z1) == std::abs(z2)) // true << " " <<std::abs(z2 + 4.0 + 9i); // 10最後的輸出值是 10,因為作為 abs() 的引數的表示式的計算結果是 (8.0+6i);82 和 62 是 100,平方根是 10。
complex<double> zc {0.0, std::acos(-1)}; std::cout << (std::exp (zc) +1.0) << 'n'; // (0, 1.22465e-16) or zero near enoughacos(-1) 是 π,所以這揭示了歐拉方程令人震驚的真相,π 和歐拉數 e 是有關聯的:eiπ+1=0。