- 指数运算符:
- #include<cmath>
- a^b: pow(a, b)
- ctime头文件中的time(0)函数返回自格林尼治标准时间1970年1月1日00:00:00至当前时刻间的秒数(例如 int x = time(0)),#include<ctime>
- 简写运算符:+=、-=、*=、/=、%=
- 自增、自减运算符:++、--
- 强制类型转换:static_cast<value> , 例如static_cast<int>(5.0)
- 静态类型转换:(value), 例如 i = (int)5.4
- 类型转换并不改变被转换变量的值。
- 两个浮点值的比较可能会出现偏差:因为浮点数是有限制的精度,设计浮点数的计算会导致舍入的误差,有可能出现0.5 != 0.6 - 0.1 等误差。一般来说,比较两个浮点值用两个数间的差距的大小来比较,间距小于一定值时我们可以认为两个值是相等的,即|x-y|<α,α为一个非常小的数值,通常,比较两个double值α设置为10^-14,比较两个float值时设置为10^-7。
- 注意 !a<=50 与 !(a<=50) 的不同。
- 生成随机数:
- #include<cstdlib>
- rand()
- //生成伪随机数,括号内默认为1,每次在同一个系统执行此函数时,会生成同一个数
- //可以改变括号中的种子的值来改变生成的随机数
- srand(seed)
- //改变随机数的种子的值,为确保每次生成的随机数都不同,可以将seed设置为time(0)
- 例如:生成0-9间的随机整数
- srand(time(0));
- cout << rand()%10 << endl;
- 条件表达式:
- boolea-expression ? expression1 : expression2
- 当表达式为真时,执行语句一,反之执行语句二;
- y = x > 0 ? 1 : -1
- 当x > 0 时,y=1,反之y=-1
- 三角函数:
- 头文件:#include<cmath>
- sin(),cos(),tan()
- asin(),acos(),atan() //返回弧度角度值
- 指数函数:
- 头文件:#include<cmath>
- exp(x) /*返回e^x的值*/,
- log(x) /*返回自然对数的值(loge(x))*/,
- log10(x),
- pow(a, b), sqrt(x) /*返回x的算术平方根*/
- 近似函数:
- 头文件:#include<cmath>
- ceil(x):向上取整
- floor(x):向下取整
- min,max,abs:
- 头文件:GNU C++:#include<cstdlib> ; VC++:#include<algorithm>
- max(x,y)返回两个数的最大值
- min(x,y)返回两个数的最小值
- abs(x)返回一个数的绝对值
- 部分转义字符:
- \b回退符
- \t制表符
- \n换行符
- \f换页符
- \r回车符
- \\在字符串中表示\
- \"在字符串中表示"
- '','\t','\f','\r','\n'被称为空白字符
- 当一个整数被转换为一个字符时只有低8位能被使用,剩下的部分就被忽略掉了,
- 而浮点数被转换为字符时会先转换为int型
- 字符函数:
- 头文件:#include<cctype>
- isdigit()如果指定的字符是数字,返回true
- isalpha()如果指定的字符是字母,返回true
- isalnum()如果指定的字符是数字或字母,返回true
- islower()如果指定的字符是小写字母,返回true
- isupper()如果指定的字符是大写字母,返回true
- isspace()如果指定的字符是空白字符,返回true
- tolower()返回字符的小写形式
- toupper()返回字符的大写形式
- string对象的简单函数:
- length()返回字符串中的长度,例如message.length()
- size()返回字符串的字符个数,一般地,与length()相同,message.length()
- at()返回字符串中指定位置的字符,message.at(2)(编号从零开始),也可以像数组一样使用,即message[2]
- string s = "ABC"; s+= "D"; //valid
- string s = "abc" + "def"; //invalid
- 可以使用关系运算符== , != , < , <= , > , >= , 来比较两个字符串。具体比较过程是两个字符串从左到右每一个字符进行比较。
- getline(cin , s , delimitChararcter) 可以读取一个字符串,即使字符串中含有空白字符,例如New York。
- getline(cin , a , '\n' ) 第三个位置的参数默认为 '\n' ,所以可以用getline(cin , a )来代替。
- 常用的流操作:
- #include<iomanip>
- setprecision(n) 设置一个浮点数的精度,有效数字位数,位数太多会近似(四舍五入)而不是直接舍去
- fixed 显示指定小数位数的浮点数
- showpoint 即使没有小数部分也显示以零补足的小数点后的位数
- setw(width) 指定打印字段的宽度,只可影响一次输出,不足时自动补齐,越界时自动调整宽度,默认为右对齐
- left 调整输出为左对齐
- right 调整输出为右对齐
- cout << fixed << setprecision(2); //保留两位小数
- cout << showpoint << setprecision(6); //保留六位精度
- 简单的文件操作:
- 写入文件:
- ofstream a; //声明一个ofstream变量
- open("example.txt"); //创建一个名为examp.txt的文件,若存在则销毁后重新创建
- a << 35; //将35写入文件中
- close;
- 读取文件:
- ifstream b; //声明一个ifstream变量
- b.open("example.txt"); //指定一个文件
- b >> s1; //读取到s1中
- b.close();
- input对象的eof()函数可以判断文件是否结束,input.eof()
- 二分法,数组应事先排好序才可使用二分法
- 部分C字符串函数:(size_t 在大多数编译器下相当于 unsigned int)
- #include<cstring>:
- size_t strlen(s[]):返回字符串的长度
- strcpy(char s1[], const char s2[]):将字符串s2复制给s1
- strncpy(char s1[], const char s2[], size_t n):将s2的前n个复制给s1
- strcat(char s1[], const char s2[]):将s2拼接到s1之后,改变s1,s1中要有足够的空间
- strncat(char s1[], const char s2[], size_t n): 将s2的前n个拼接到s1之后
- int strcmp(char s1[], const char s2[]):通过字符的数值码对比,判断s1 > 、= 、< s2,返回+1 、 0 、 -1(不同编译器返回值可能不同)
- int strncmp(char s1[], const char s2[], size_t n):比较前n个
- #include<cstdlib>:
- int atoi(char s[]):返回字符串对应的int值
- double atof(char s[]):返回字符串对应的double值
- long atol(char s[]):返回字符串对应的long值
- void itoa(int value, char s[], int radix):获得一个字符串的整数值,基于一个指定的集数,有些编译器不支持,用于进制转换,itoa(a, b, c)将a转换成c进制数以字符串形式存储在b中。
- 字符串强制转换为数字时,转换为其ASCII码值,所以当字符‘9’转换为数字‘9’时,需要减去一个字符‘0’,即 - '0'。
- 递归辅助函数:声明一个重载的函数,以接收额外的参数。
- 涉及字符串和数组时,递归辅助函数将会很有用。
- 构造函数:
- 构造函数的名字必须和类名相同;
- 构造函数没有返回类型——即使是void也不可以;
- 在创建对象时,构造函数被使用,它的作用就是初始化对象。
- 构造函数可以重载
- 一个变量可以在一条语句中声明和初始化,但是作为一个类成员,数据域不可以在声明时进行初始化。例如在类中 double r = 5.0; 将会是错误的。
- 一个类的声明可以不包含构造函数的声明,这种情况下相当于在类中隐含声明了一个无参的空构造函数。这个构造函数被称为缺省构造函数,只有未显式的声明构造函数时,编译器才会自动的提供缺省构造函数。
- 对象的数据域和函数通过使用点运算符(.)来访问。
- 类成员可以按任意顺序声明,但较好的方式是先声明公有成员再声明私有成员。
- string s = "Welcome to HE"
- string s("Welcome to ")
- 两种方式都可以创建一个字符串,但是第二种效率更高
- 追加字符串s.append()在字符串s后增加一串字符
- 字符串赋值:
- +assign(s[]:char):string 将一个字符数组或者一个字符串s赋予当前字符串
- +assign(s:string):string 将字符串s赋予当前字符串
- +assign(s:string, index:int, n:int):string 将s从下标index起的n个字符赋予当前字符串
- +assign(s:string, n:int):string 将s的前n个字符赋予当前字符串
- +assign(n:int, ch:char):string 将当前字符串赋值给为ch的n次重复
- +at(index:int):char 返回当前字符串中下标index处的字符
- +clear():void 清除当前字符串中的所有字符
- +erase(index:int, n:int):string 删除当前字符串从下标index处开始的n个字符
- +empty():bool 若当前字符串为空,则返回true
- +length():int 返回当前字符串中字符个数
- +size():int 与length()相同
- +capacity():int 返回为当前字符串分配的存储空间的大小
- +c_str():int 返回当前字符串对象的C字符串
- +data():char[] 与+c_str相同
- +compare(s:string):int 根据当前字符串大于、等于、小于s分别返回1, 0, -1 不同编译器会有所不同
- +compare(index:int, n:int, s:string) 比较当前字符串与子字符串s(index, ..., index+n-1)
- +substr(index:int, n:int):string 返回当前字符串从下标index开始的n个字符组成的子串
- +substr(index:int):string 返回当前字符串从下标index开始的子串
- +find(ch:char):unsigned 返回字符ch出现的第一个位置
- +find(ch:char, index:int):unsigned 返回从下标index开始的ch出现的第一个位置
- +find(s:string):unsigned 返回子串s出现的第一个位置
- +find(s:string, index:int):unsigned 返回字符串从下标index开始子串s出现的第一个位置
- (如果未找到返回npos(string::npos),npos是string定义的一个常量)
- +insert(index:int, s:string):string 将字符串s插入当前字符串下标index处
- +insert(index:int, n:int, ch:char):string 将n个ch字符插入当前字符串下标index处
- +replace(index:int, n:int, s:string):string 将当前字符串从下标index处开始的n个字符串替换为字符串s
- 字符串运算符:
- [] 以下标形式访问字符串中的字符
- = 复制字符串到另一个字符串
- + 连接字符串
- += 连接字符串给当前字符串
- <<,>> 流操作
- 比较运算符
- 头文件<sstream>中的stringstream类提供的接口可以使我们类似处理输入/输出流一样来处理字符串
- 实例对象:不同变量的成员独立无关
- 静态变量:一个类的变量共享数据
- 声明静态变量或者静态函数:在变量或者函数声明前放置修饰符static
- 实例函数和实例数据域是从属于类对象的,只有创建对象后,才能通过特定的对象来使用它们,而对于静态函数和静态数据域,既可以通过任意的类对象来访问,又可以直接通过类名来访问。
- 如果变量或者函数是依赖于具体类对象的,那么就应该声明为实例的;否则,如果变量或者函数不依赖于任何类对象,那么就应该声明为静态的。
- 只读成员函数,参数加上const告知编译器该参数不会被改变,把const关键字放置在函数头的结尾即可。
- 只有实例函数可以被定义为只读函数,静态函数不可以。
- 在面向过程的程序设计中,数据和数据的操作是独立的,所以需要把数据传递给函数。而面向对象编程把数据和操作捏合在一起,形成了一个整体,叫做对象。
posted @
2019-07-05 17:37
祟役丶
阅读(
697)
评论()
编辑
收藏
举报