名稱空間
變體
操作

operator+,-,*,/ (std::complex)

來自 cppreference.com
< cpp‎ | 數值‎ | 複數
 
 
 
 
(1)
template< class T >

std::complex<T> operator+( const std::complex<T>& lhs,

                           const std::complex<T>& rhs );
(C++20 前)
template< class T >

constexpr std::complex<T> operator+( const std::complex<T>& lhs,

                                     const std::complex<T>& rhs );
(C++20 起)
(2)
template< class T >

std::complex<T> operator+( const std::complex<T>& lhs,

                           const T& rhs );
(C++20 前)
template< class T >

constexpr std::complex<T> operator+( const std::complex<T>& lhs,

                                     const T& rhs );
(C++20 起)
(3)
template< class T >

std::complex<T> operator+( const T& lhs,

                           const std::complex<T>& rhs );
(C++20 前)
template< class T >

constexpr std::complex<T> operator+( const T& lhs,

                                     const std::complex<T>& rhs );
(C++20 起)
(4)
template< class T >

std::complex<T> operator-( const std::complex<T>& lhs,

                           const std::complex<T>& rhs );
(C++20 前)
template< class T >

constexpr std::complex<T> operator-( const std::complex<T>& lhs,

                                     const std::complex<T>& rhs );
(C++20 起)
(5)
template< class T >

std::complex<T> operator-( const std::complex<T>& lhs,

                           const T& rhs );
(C++20 前)
template< class T >

constexpr std::complex<T> operator-( const std::complex<T>& lhs,

                                     const T& rhs );
(C++20 起)
(6)
template< class T >

std::complex<T> operator-( const T& lhs,

                           const std::complex<T>& rhs );
(C++20 前)
template< class T >

constexpr std::complex<T> operator-( const T& lhs,

                                     const std::complex<T>& rhs );
(C++20 起)
(7)
template< class T >

std::complex<T> operator*( const std::complex<T>& lhs,

                           const std::complex<T>& rhs );
(C++20 前)
template< class T >

constexpr std::complex<T> operator*( const std::complex<T>& lhs,

                                     const std::complex<T>& rhs );
(C++20 起)
(8)
template< class T >

std::complex<T> operator*( const std::complex<T>& lhs,

                           const T& rhs );
(C++20 前)
template< class T >

constexpr std::complex<T> operator*( const std::complex<T>& lhs,

                                     const T& rhs );
(C++20 起)
(9)
template< class T >

std::complex<T> operator*( const T& lhs,

                           const std::complex<T>& rhs );
(C++20 前)
template< class T >

constexpr std::complex<T> operator*( const T& lhs,

                                     const std::complex<T>& rhs );
(C++20 起)
(10)
template< class T >

std::complex<T> operator/( const std::complex<T>& lhs,

                           const std::complex<T>& rhs );
(C++20 前)
template< class T >

constexpr std::complex<T> operator/( const std::complex<T>& lhs,

                                     const std::complex<T>& rhs );
(C++20 起)
(11)
template< class T >

std::complex<T> operator/( const std::complex<T>& lhs,

                           const T& rhs );
(C++20 前)
template< class T >

constexpr std::complex<T> operator/( const std::complex<T>& lhs,

                                     const T& rhs );
(C++20 起)
(12)
template< class T >

std::complex<T> operator/( const T& lhs,

                           const std::complex<T>& rhs );
(C++20 前)
template< class T >

constexpr std::complex<T> operator/( const T& lhs,

                                     const std::complex<T>& rhs );
(C++20 起)

實現複數算術和混合複數/標量算術的二元運算子。標量引數被視為實部等於引數且虛部為零的複數。

1-3) 返回其引數的和。
4-6) 返回從 lhs 中減去 rhs 的結果。
7-9) 乘以其引數。
10-12)lhs 除以 rhs

目錄

[編輯] 引數

lhs, rhs - 引數:要麼都是複數,要麼是一個複數和一個匹配型別的標量(floatdoublelong double

[編輯] 返回值

1-3) std::complex<T>(lhs) += rhs
4-6) std::complex<T>(lhs) -= rhs
7-9) std::complex<T>(lhs) *= rhs
10-12) std::complex<T>(lhs) /= rhs

[編輯] 註解

因為模板引數推導不考慮隱式轉換,所以這些運算子不能用於混合整數/複數算術。在所有情況下,標量都必須與複數的基礎型別具有相同的型別。

GCC 標誌 "-fcx-limited-range"(由 "-ffast-math" 包含)透過刪除對浮點邊界情況的檢查來改變複數乘法/除法的行為。這會影響迴圈向量化。

[編輯] 示例

#include <complex>
#include <iostream>
 
int main()
{
    std::complex<double> c2(2.0, 0.0);
    std::complex<double> ci(0.0, 1.0);
 
    std::cout << ci << " + " << c2 << " = " << ci + c2 << '\n'
              << ci << " * " << ci << " = " << ci * ci << '\n'
              << ci << " + " << c2 << " / " << ci << " = " << ci + c2 / ci << '\n'
              << 1  << " / " << ci << " = " << 1.0 / ci << '\n';
 
//    std::cout << 1.0f / ci; // compile error
//    std::cout << 1 / ci; // compile error
}

輸出

(0,1) + (2,0) = (2,1)
(0,1) * (0,1) = (-1,0)
(0,1) + (2,0) / (0,1) = (0,-1)
1 / (0,1) = (0,-1)

[編輯] 參閱

兩個複數或一個複數和一個標量的複合賦值
(public member function) [編輯]
對複數應用一元運算子
(function template) [編輯]