C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- å¸¸ç¨æ°å¦å½æ°
- æ°å¦ç¹æ®å½æ°
- ä¼ªéæºæ°çæ
- æµ®ç¹ç¯å¢
- std::complex
- std::complex<T>::complex
- std::complex<T>::operator=
- std::complex<T>::real
- std::literals::complex_literals::operator""i, operator""if, operator""il
- std::complex<T>::imag
- std::complex<T>::operator+=,-=,*=,/=
- std::complex<T>::operator+(unary), operator-(unary)
- operator+,-,*,/ (std::complex)
- operator==,!=(std::complex)
- operator<<,>>(std::complex)
- std::real(std::complex)
- std::imag(std::complex)
- std::abs(std::complex)
- std::arg(std::complex)
- std::norm(std::complex)
- std::conj(std::complex)
- std::proj(std::complex)
- std::polar(std::complex)
- std::exp(std::complex)
- std::log(std::complex)
- std::log10(std::complex)
- std::pow(std::complex)
- std::sqrt(std::complex)
- std::sin(std::complex)
- std::cos(std::complex)
- std::tan(std::complex)
- std::asin(std::complex)
- std::acos(std::complex)
- std::atan(std::complex)
- std::sinh(std::complex)
- std::cosh(std::complex)
- std::tanh(std::complex)
- std::asinh(std::complex)
- std::acosh(std::complex)
- std::atanh(std::complex)
- std::midpoint
- std::lerp
- std::has_single_bit
- std::bit_ceil
- std::bit_floor
- std::bit_width
- std::rotl
- std::valarray
- ç¼è¯æ¶æçæ°ç®æ¯
- std::gcd
- std::lcm
- æ°å¦å¸¸æ°
- std::bit_cast
- std::rotr
- std::countl_zero
- std::countl_one
- std::countr_zero
- std::countr_one
- std::popcount
- 注é
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >æ°å¼åº > std::complex
std::complex
模æ¿ç¹å std::complex<float> ã std::complex<double> å std::complex<long double> æ¯è¡¨ç¤ºå¹¶è®¡ç®å¤æ°çåé¢ç±»å (LiteralType) ã
对任ä½å
¶ä»ç±»åï¼å®ä¾åæ¨¡æ¿ complex çæææ¯ä¸ç¡®å®çã
æåç±»å
| Â | |
| æåç±»å | å®ä¹ |
value_type
|
T
|
æå彿°
| æé ä¸ä¸ªå¤æ° (å ¬å¼æå彿°) | |
| èµå¼å
容 (å ¬å¼æå彿°) | |
| 访é®å¤æ°çå®é¨ (å ¬å¼æå彿°) | |
| 访é®å¤æ°çèé¨ (å ¬å¼æå彿°) | |
| ä¸¤ä¸ªå¤æ°ï¼æä¸ä¸ªå¤æ°ä¸ä¸ä¸ªæ éçå¤åèµå¼ (å ¬å¼æå彿°) |
éæå彿°
| 坹夿°è¿ç¨ä¸å
è¿ç®ç¬¦ (彿°æ¨¡æ¿) | |
| å¨ä¸¤ä¸ªå¤æ°ï¼æä¸ä¸ªå¤æ°ä¸ä¸ä¸ªæ éä¸è¿è¡å¤æ°ç®æ¯è¿ç® (彿°æ¨¡æ¿) | |
| (C++20 ä¸ç§»é¤) |
æ¯è¾ä¸¤ä¸ªå¤æ°ï¼æä¸ä¸ªå¤æ°ä¸ä¸ä¸ªæ é (彿°æ¨¡æ¿) |
| 夿°çåºåååååºåå (彿°æ¨¡æ¿) | |
| è¿åå®é¨ (彿°æ¨¡æ¿) | |
| è¿åèé¨ (彿°æ¨¡æ¿) | |
| è¿å夿°ç模 (彿°æ¨¡æ¿) | |
| è¿åè¾è§ (彿°æ¨¡æ¿) | |
| è¿å模(èæ°)çå¹³æ¹ (彿°æ¨¡æ¿) | |
| è¿åå¤å
±è½ (彿°æ¨¡æ¿) | |
| (C++11) |
è¿åå°é»æ¼çä¸çæå½± (彿°æ¨¡æ¿) |
| 仿¨¡åè¾è§æé 夿° (彿°æ¨¡æ¿) | |
ææ°å½æ° | |
| 以 e 为åºå¤æ°çææ° (彿°æ¨¡æ¿) | |
| 沿è´å®è½´åå²çå¤èªç¶å¯¹æ° (彿°æ¨¡æ¿) | |
| 沿è´å®è½´åå²çå¤å¸¸ç¨å¯¹æ° (彿°æ¨¡æ¿) | |
å¹å½æ° | |
| 夿°å¹ï¼ä¸æä¸¤ä¸ªåæ°å¯ä¸ºå¤æ° (彿°æ¨¡æ¿) | |
| å³åå¹³é¢èå´ä¸çå¤å¹³æ¹æ ¹ (彿°æ¨¡æ¿) | |
ä¸è§å½æ° | |
| 计ç®å¤æ°çæ£å¼¦ï¼ sin(z) ï¼ (彿°æ¨¡æ¿) | |
| 计ç®å¤æ°çä½å¼¦ï¼ cos(z) ï¼ (彿°æ¨¡æ¿) | |
| 计ç®å¤æ°çæ£åï¼ tan(z) ï¼ (彿°æ¨¡æ¿) | |
| (C++11) |
计ç®å¤æ°çåæ£å¼¦ï¼ arcsin(z) ï¼ (彿°æ¨¡æ¿) |
| (C++11) |
计ç®å¤æ°çåä½å¼¦ï¼ arccos(z) ï¼ (彿°æ¨¡æ¿) |
| (C++11) |
计ç®å¤æ°ç忣åï¼ arctan(z) ï¼ (彿°æ¨¡æ¿) |
忲彿° | |
| 计ç®å¤æ°çåæ²æ£å¼¦ï¼ sinh(z) ï¼ (彿°æ¨¡æ¿) | |
| 计ç®å¤æ°çåæ²ä½å¼¦ï¼ cosh(z) ï¼ (彿°æ¨¡æ¿) | |
| 计ç®å¤æ°çåæ²æ£åï¼ tanh(z) ï¼ (彿°æ¨¡æ¿) | |
| (C++11) |
计ç®å¤æ°çååæ²æ£å¼¦ï¼ arsinh(z) ï¼ (彿°æ¨¡æ¿) |
| (C++11) |
计ç®å¤æ°çååæ²ä½å¼¦ï¼ arcosh(z) ï¼ (彿°æ¨¡æ¿) |
| (C++11) |
计ç®å¤æ°çååæ²æ£åï¼ artanh(z) ï¼ (彿°æ¨¡æ¿) |
éè¿æ°ç»è®¿é®
|
对äºä»»ä½ 对äºä»»ä½å为 æ¤è¦æ±çç®çæ¯ C++ 夿°ç±»åä¸ C è¯è¨å¤æ°ç±»åï¼åå ¶æ°ç»ï¼çäºè¿å¶å ¼å®¹æ§ï¼å ¶ä¸è¦æ±ç¸åç对象表示ã |
(C++11 èµ·) |
å®ç°æ³¨è§£
|
为满足æ°ç»è®¿é®çè¦æ±ï¼å®ç°é满足å¨åç¬ä¸ç¸é»çå
åä½ç½®åå¨
å®ç°ä¸è½æ·»å ä¼å ç¨ä¸å®é¨åèé¨å²çªçåå¨çééææ°æ®æåï¼èä¸å¿
须确ä¿ç±»æ¨¡æ¿ç¹åä¸å«ä»»ä½å¡«å
ãå®ç°ä¹å¿
须确ä¿å¯¹æ°ç»è®¿é®çä¼åé®é¢ï¼å
¶ä¸è¦èèå°æå value_type çæéå¯è½ä¸º |
(C++11 èµ·) |
åé¢é
| å®ä¹äºå
èå½å空é´
std::literals::complex_literals | |
| è¡¨ç¤ºçº¯èæ°ç std::complex åé¢é (彿°) | |
示ä¾
#include <iostream> #include <iomanip> #include <complex> #include <cmath>  int main() { using namespace std::complex_literals; std::cout << std::fixed << std::setprecision(1);  std::complex<double> z1 = 1i * 1i; // èæ°åä½å¹³æ¹ std::cout << "i * i = " << z1 << '\n';  std::complex<double> z2 = std::pow(1i, 2); // èæ°åä½å¹³æ¹ std::cout << "pow(i, 2) = " << z2 << '\n';  double PI = std::acos(-1); std::complex<double> z3 = std::exp(1i * PI); // æ¬§ææ¹ç¨ std::cout << "exp(i * pi) = " << z3 << '\n';  std::complex<double> z4 = 1. + 2i, z5 = 1. - 2i; // å ±è½ std::cout << "(1+2i)*(1-2i) = " << z4 * z5 << '\n'; }
è¾åºï¼
i * i = (-1.0,0.0) pow(i, 2) = (-1.0,0.0) exp(i * pi) = (-1.0,0.0) (1+2i)*(1-2i) = (5.0,0.0)