zoukankan      html  css  js  c++  java
  • C++STL complex吃书使用指南

    说在前面:

    complex即为复数

    使用c++自带的complex类型,首先要有<complex>头文件,还要使用std命名空间

    声明方式:

    complex <T> a;  声明一个类型为T的复数a,T可为int,float,double,long double,甚至是string等各种类型。如果类型非数值类型,只会导致一些函数无法使用。可见complex本质与元素对类似。

      类型可为自建的类/结构体类型,这时只需重载一些东西((流)输入输出,运算符,常用函数...)

    可使用构造函数:

    complex <T> a(x,y) ;   声明一个实部为x,虚部为y的复数a。可没有第二个参数,此时默认虚部为0。

    complex <T> (x,y)  构造一个实部为x,虚部为y的复数,常常用于赋值。

    运算:

    一元运算符:+(正号),-(负号)后接实数或复数

    二元运算符:

      =(赋值),+=,-=,*=,/= 后接实数或复数(复数类型可与运算符前的复数不同)  

      +,-,*,/,==,!= 两边实数复数均可,只要求一边实数另一边复数时两数同一类型(都是double等)

    输入输出方式:

    1、使用流输入输出。复数的流输出是有序数对的形式,流输入可以只输入一个数(为实部,此时虚部默认为0),或一个有序数对(数对也可以无第二个数,此时效果等同于只输入一个数),如:

     2、通过用.imag()和.real()函数直接操作复数的实部虚部(printf,scanf(别忘加&),快读快输出等)

    常用函数:

    1参:

    real():返回可修改的复数实部

    imag():返回可修改的复数虚部

    abs():求模。

    norm(): 函数模板会返回复数的量的平方。

    arg() :返回以弧度为单位的复数 z幅角的主值, 相当于atan(z.imag()/z.real())。

    conj():返回共轭复数。

    sqrt():复数平方根(一定有解,可由复数的三角表示易知)

    cos(),cosh(),sin(),sinh(),tan(),tanh():返回复数的相应值(与幅角的相应值不是一个概念)

    以上函数除了conj()返回相应类型复数,其余都返回复数的类型。

    exp,log,log10,四个pow,prqj,待以后深究

    2参:

    polar() 函数模板接受量和相角作为参数,并返回和它们对应的复数对象。复数类型为参数类型,参数类型必须相同。

    特殊:

    .real():有参则为复数实部赋值,无返回值;无参则同real()。

    .imag():有参则为复数虚部赋值,无返回值;无参则同imag()。

    后记:

    对于一个括号内若干由逗号隔开的数,若前没有复数的声明定义,则只是一个逗号表达式,会返回最后一个数的值。

    现已吃到complex源文件488行,待继续填坑                                                                                                            

  • 相关阅读:
    Dockerfile
    最近遇到的jsfl开发问题总结
    【Distributed】大型网站高并发和高可用
    【Distributed】CDN
    【Distributed】限流技巧
    【Java并发】锁机制
    【Java并发】线程通信
    【Java并发】线程安全和内存模型
    【Java并发】基础
    【Redis】基本数据类型及命令操作(超详细)
  • 原文地址:https://www.cnblogs.com/InductiveSorting-QYF/p/13612439.html
Copyright © 2011-2022 走看看