已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+札记目录常见转义字符:- 1 -数据类型及其转换:- 1 -变量或函数申明:- 1 -运算符:- 1 -算法及流程图:- 2 -数组:- 3 -函数及引用:- 3 -预处理:- 3 -指针:- 4 -类:- 5 -友元:- 5 -命名空间:- 5 -继承:- 6 -多态及虚函数:- 6 -输入输出流:- 6 -文件类:- 8 -容器:- 8 -模板:- 9 -C+标准库:- 11 -异常- 16 - 18 -C+札记常见转义字符:字符形式代表符号整数值字符形式代表符号整数值a响铃0x07反斜杠0x5cb退格0x08?问号0x3ff换页0x09单引号0x27n换行0x0a”双引号0x22r回车0x0b0空字符NULLt水平制表0x0dddd任意字符0ddd八进制v垂直制表xhh任意字符0xhh十六进制数据类型及其转换:1) 8位char;16位short int;32位int;*32位long int。2) 数据类型转换次序:字符型短整型整型单精度浮点型双精度浮点型。C语法:(新的数据类型)被转换的表达式操作符:static_cast,与C一样;const_cast,转换掉表达式的const或volatileness属性;dynamic_cast,用于安全地沿着类的继承关系向下转换;reintrpret_cast,用于底层的强制转换。用法:操作符被转换的表达式。变量或函数申明:3) 声明:分类符 类型名 声明符 变量或函数 初始化部分;分类符specifier:virtua、extern,可有可无。声明符declarator:*,指针(前置);*const,常量指针(前置);&,引用(前置);,数组(后置);(),函数(后置)。运算符:4) 运算符(以;分隔):优先级运算符及功能说明结合性1(); ;.-左右2+;-;正+;负-;取地址&;取内容*;按位取反;取反!;动态存储分配new和delete;强制类型转换( );sizeof右左3*;/;%左右4+;-5左移位6;=7=;!=8按位与&9按位异或10按位或|11&12|13条件表达式?:14赋值=;+=;-=;*=;/=;%=;&=;=;|=;=;=;&=;|=右左15逗号表达式,左右5) 运算符优先级(降低):算术运算位移运算关系运算位运算逻辑运算程序结构及转移指令:6) 多分支选择:switch-case-break-default。7) 使程序执行分支转移到被称为标号的目的地:goto(相当于汇编中的JMP等)。跳出循环:break。忽略循环体中位于它之后的语句,重新回到条件表达式的判断:continue。算法及流程图:8) 算法特性:有穷性、唯一性、有输入和输出、正确性。9) 流程图:起止框、判断框、处理框、流程线、输入/输出框、连接点。10) 算法表示:自然语言、流程图、N-S图(框图)、伪代码、PAD图(自上而下、自左向右的二维树型结构)。N_S图:PAD图:11) 结构化算法:方案确定、算法描述、编写程序、程序调试。数组:12) 数组赋值:一维数组初值全部给出是可不指定数组长度,多维数组在此情况下可省略第一维的长度。不能跳过某一个元素给同维后面的元素赋值,也不能跳过二维数组的整行给后面的行赋值。13) 模块化的概率开发程序优点:信息隐藏、程序代码再利用、程序代码的纠错。函数及引用:14) 函数的参数和返回值是该函数对内、对外联系的窗口,成为接口。15) 引用&:定义引用时,应同时对它初始化,使它与一个类型相同的已有变量关联;一个引用与某变量关联,就不能再与其它变量关联;引用主要用做函数的形参和返回值。16) 函数不能嵌套定义,但能够嵌套调用。17) 递归调用:递推、回归。18) 函数重载:只有功能相近的函数才有必要重载。重载必须是形参个数不同或者形参类型不同。19) 函数中有多个默认参数,则形参应从最右边依次向左设定,调用时只能向左匹配参数。二义性,即一个函数既作为重载函数,又作为带默认值的函数。20) 变量作用域:文件作用域、函数作用域、块作用域、函数原型作用域。前者是全局的,后三者是局部的。程序分配内存:代码区、全局数据区、堆区(动态数据)、栈区(局部数据)。21) 局部变量在其作用域内,将屏蔽与其同名的全局变量。但是可以利用域运算符“:”访问同名的全局变量。22) 变量的存储类别:auto说明局部变量,可省略static生存期是全程的,作用域是局部的。适用:需要保存上一次调用结束时的值;初始化变量只被引用而不改变其值;全局变量,是静态存储类别。register局部变量,存入CPU的寄存器内extern全局变量:同一文件中全局变量使用在前,定义在后;多文件组成一个程序时,一个源程序文件中定义的全局变量要被其他若干个源程序文件引用时。23) 内部函数:static 类型标识符 函数名(形参表);外部函数:extern ();24) 内联函数:inline (形参表)函数体;不能含有循环语句和switch语句;必须在调用之前申明或者定义;不能指定抛掷异常的类型;用inline修饰只是向编译器提出了内联请求,是否作为内联函数由编译器处理。25) 主函数:int main()int main(int argc, char*argv)argc表示参数的个数,至少为1(main函数本身放在的文件名放在索引为0的字符串数组argv中,即argv0)。预处理:26) 编译预处理:文件包含命令:#include 或#include “文件名”宏定义:#define 标识符 字符串 或 #define 宏名(参数表) 字符串在C语言中常用宏,C+中经常使用const语句代替不带参数的宏,而使用inline内联函数来代替带参数的宏。#undef 宏名 终止该宏定义作用域。条件编译命令:三种形式,如下1、#ifdef 标识符程序段1#else程序段2#endif如果标识符已被#define命令定义过,则编译程序段1,否则编译程序段2。2、#ifndef 标识符程序段1#else程序段2#endif与1相反。3、#if 表达式1程序段1#elif 表达式2程序段2#else程序段n#endif指针:27) 指针的运算:对指针赋值、移动指针、两个指针相减、指针与指针或指针与地址之间进行比较等。28) 指针对于二维数组:*(*(array+i)+j)=arrayij。29) 数组指针:(*p)n,p是一个指向含有n个元素数组的指针。且有(*(p+i)j=pij,而不是*(p+i)j=pij。后者表示的是指针数组,即数组中的每一个元素都是指针。30) 字符数组和字符指针变量区别:赋值方式不同。字符数组只能对各个元素赋值。指针变量的值是可以改变的,但是字符数组名是不可以改变的。31) 函数指针:用指针变量指向一个函数,用途是把指针作为参数传递到其他函数。指向函数的指针也可以作为参数,以实现函数地址的传递,这样就能在被调用的函数中使用实参函数。如(*p)(形参表)。返回指针的函数:类型名 *函数名(参数表); 如char *max(char *x, char *y); 。32) const int *p1; 指针指向的值不能改变。int *const p2; 指针不能指向其他变量。33) void指针类型,可以用来指向一个抽象的类型的数据,在将它的值赋给另一个指针变量时,要进行强制类型转换使之适合于被赋值的变量的类型。类:34) 类的定义:class public:/可在类外访问protected:/只能被该类的成员函数访问private:/只能被该类的成员函数或派生类的成员函数访问;/声明部分 /实现部分成员函数通常在类外定义:返回类型 类名:函数名(形参表)/:是域运算符函数体35) 对象定义: ;对象的成员表示: . ()/ . 是成员选择符36) 构造函数与类同名,析构函数也与类同名,前加即可。析构函数不带参数,不能重载,所以析构函数只有一个,在对象销毁前调用。两者的调用顺序相反。友元:37) 友元函数:friend (参数表);使用说明:必须在类的定义中说明友元函数,以friend开头;友元函数不是类的成员,因而不能直接引用对象成员的名字,也不能通过this指针引用对象的成员,而必须通过入口参数传递进来的对象名或对象指针来引用该对象的成员,所以友元函数一般都带有一个该类的入口参数;当一个函数需要访问多个类时,应该把这个函数同时定义为这些类的友元函数。友元成员:一个类的成员函数是另一个类的友元函数。此时,必须先定义这个类。友元类:当一个类作为另一个类的友元时,这个类中的所有成员函数都是另一个类的友元函数,都可以访问另一个类的私有和保护成员。命名空间:38) 命名空间的使用不仅可以避免命名冲突,还可以简化对类成员的访问。定义格式:namespace 命名空间名命名空间声明内容;调用时使用域运算符“:”。调用时简化,即使用别名:namespace 别名 = 命名空间名;C+中引入命名空间,除了可以避免成员的名称发生冲突之外,还可以使代码保持局部性,从而保护代码不被他人非法使用。命名空间可以嵌套。using声明:using namespace_name:name; name可以是成员名、函数或变量,而不能是命名空间名。一个一个单独声明。using指令:using namespace namespace_name; 在其后可以使用该命名空间中的名字,而不必写前面的命名空间定位部分。只在其被声明的语句块内有效。类相当于文件,则命名空间相当于文件夹。继承:39) 继承的一般形式:class 派生类:访问权限 基类 /访问权限:public,pretected,private基类的构造函数和析构函数不能被继承。派生类以公有继承方式继承了基类,并不说明派生类可以访问基类的private成员。多重继承与二义性。基类及派生类的构造函数调用顺序:按基类被列出的顺序逐一调用基类的构造函数;如果该派生类存在成员对象,则调用成员对象的构造函数;若存在多个成员对象的情况,则按它们被列出的顺序逐一调用;最后调用派生类的构造函数。析构函数的调用顺序与构造函数的调用顺序正好相反。多态及虚函数:40) 多态:同一操作作用于不同的类的实例,将产生不同的执行结果。也就是说,不同的类的对象收到相同的消息时,得到不同的结果。虚函数:定义在基类中的一种特殊的函数,只需将成员函数冠以关键字virtual即可。可以实现动态联编,从而实现多态。滞后捆绑技术。虚函数注意事项:采用滞后捆绑技术实现,执行效率比之一般的函数要差一些;一旦将一个方法声明为虚函数,则会在继承结构中自动地传承下去,即在所有的派生类中自动成为虚函数,前提是函数名和参数列表一摸一样;虚函数完全是在继承中体现的,所以虚函数必须也只能是类的成员函数;虚函数反映在对象层面上(对象的捆绑),因而对于静态函数没有虚函数可言;内联函数不可能是虚函数;析构函数可以是而且经常是虚函数;构造函数一定不能是虚函数。构造函数仅仅在对象创建时被调用,所以构造函数只能够被调用一次,而且由系统调用。而且构造函数最好是多态的,但只能通过重载实现,而不能通过虚函数实现。抽象类,在类中加入纯虚函数,不能被实例化,其子类必须对纯虚函数进行覆盖:class virtual ()=0;运算符重载:operator加上运算符表示一个函数。不能重载的运算符有“.”、“:”、“?:”、“.*”、“#”和“sizeof”等。定义是,“operator 运算符”就是函数名,调用时运算符就是函数名,参数伴其左右。输入输出流:41) 输入输出运算符:“”、“”。流iostream:有cin、cout、cerr(输出程序错误,默认时屏幕)。coutp; 显示指针p指向的字符串;cout(void*)p; 调用operator(const void*)成员函数以只读方式显示指针的值。常用的流状态:showpos在整数和零前显示+号showbase十六进制整数前加0x,八进制整数前加0showpoint浮点输出即使小数点后都是零也加小数点left左对齐,右边填充字符right右对齐,左边填充字符dec十进制显示整数oct八进制显示整数hex十六进制显示整数fixed定点数格式输出scientfic科学计数法输出取消流状态的操作有:noshowpos、noshowbase、noshowpoint。有参数的常用的流状态头文件“#include ”。说明如下不能与连用的fill(char)设置填充字符,默认右对齐,即左填充precision(int)设置有效位数,如cout.fill(a)width(int)设置显示宽度,一次性操作,默认为0与连用的setfill(char)同fillsetprecision(int)同precisionsetw(int)同widthget()函数:一次读入一个字符,包括空格、回车、制表符和换行符等一并读入。三种形式如:int get();istream &get(char &ch);istream &get(char *str, int length, char delimiter=n); /delimiter代表停止字符,不读。istream &getline(char *str, int length, char delimiter=n); /与前者相同。用str存储。istream &read(char &str, int length); /从输入流中读取指定数量的字符。ostream &cout.put(char ch); /输出一个字符,ch用来存储输出的字符。ostream &cout.write(char *str, int length); /输出一个指定长度的字符串。printf(格式控制列表,输出列表); /头文件#include ,格式控制列表如下。%d以带符号的十进制形式输出整数%o以八进制无符号形式输出整数%x以十六进制无符号形式输出整数%u以无符号十进制形式输出整数%c以字符形式输出一个字符%s输出字符串%f以小数形式输出单、双精度数,隐含输出6为小数%e以指数形式输出实数几种常见的格式符的修饰符:m代表一个正整数,表示数据最小宽度n代表一个正整数,对于实数输出n位小数,对于字符串表示个数-表示输出的数字或字符在域内向左靠,默认右对齐方式随机数发生器:rand函数,返回0,max之间均匀分布的伪随机整数,默认1为起始值。另一个srand:可以指定不同的数为起始值。形式:rand()%MAX,产生0,MAX-1范围内的随机数。产生a,b之间的随机数如n=a+rand()%(b-a+1)。字符串操作:#include。文件类:42) 文件流类:输入ifstream,输出ofstream,输入输出fstream。打开文件:open()。在头文件ios.h中定义了公有枚举类型open_mode,可用“|”来组合使用,如:enum open_modein=0x01;/读方式打开文件out=0x02;/写方式打开文件,单用,文件不存在则产生空文件,存在则清空ate=0x04;/需与in、out或noreplace组合使用。打开时文件指针移到文件末尾app=0x08;/追加方式打开,文件存在等价out|ate,不存在等价outtrunc=0x10;/打开文件时,若单用,则等价于outnocreate=0x20;/打开文件时,不存在则失败,与读或写方式组合使用noreplace=0x40;/创建一个新文件,不单用,与写组合。若与ate或app组合,也可binary=0x80;/以二进制方式打开文件,总是与读或写方式组合使用;关闭文件:close()。读写文件:插入;输出流函数put和write,输入get、getline和read。类ios提供了一个成员函数int ios:eof(),读到二进制文件结束时返回非零,否则返回0。文件的定位:seekg()和seekp();g是get的缩写,p是put的缩写。形式如下:istream&istream:seekg(streampos);/绝对定位,相对于文件头istream&istream:seekg(streamoff, ios:seek_dir);/相对定位streampos istream:tellg();/返回当前文件读写位置ostream&ostream:seekp(streampos);/ostream&ostream:seekp(streamoff, ios:seek_dir);/streampos ostream:tellp();/其中streampos和streamoff类型等同于long,后者表示相对位移值,而seek_dir在类ios中定义的一个公有的枚举类型,如:enum seek_dirbeg=0;/以文件开始处作为参考点bur=1;/以文件当前处作为参考点end=2;/以文件结束处作为参考点;容器:43) 标准模板库:容器库container、迭代器iterator、算法algorithm。C+标准库里提供的容器:顺序容器、关联容器、容器适配器。顺序容器:向量vector、列表list、双端队列deque。关联容器:集合set、多重集合multiset、映射map、多重映射multimap。容器适配器:栈stack、队列queue、优先级队列priority_queue。向量:用于容纳不定长线性序列,提供对序列的快速随机访问。使用动态数组存储、管理对象。大小不固定,可在程序中增加或减少。类名是vector,就是一个类模板,包含在头文件#include,定义对象:vector 对象名;有构造函数多个。其中操作有:clear(); erase(position); erase(beg, end); 删除insert(position, 数值); insert(position, n, 数值); insert(position, beg, end); 插入push_back(数值); pop_back(); 插入至向量对象列表的末尾;删除最后元素resize(num); resize(num, 数值); 将元素个数改为num。vector类包含了一个typedef iterator,是一个public成员,如:vector:iterator intVector;+intVector;*intVector;/返回当前迭代器位置上的元素。成员函数begin和end。vector1.at(index)/返回由index指定的位置上的元素vector1 index/返回由index指定的位置上的元素vector1.front()/返回第一个元素,不检查容器是否为空vector1.back()/返回最后一个元素,不检查容器是否为空vector1.capacity()/返回不重新分配空间可插入到容器vector1中元素的最大个数vector1.empty()/容器为空返回true,否则falsevector1.size()/返回容器中当前的个数vector1.max_size()/返回可以插入到容器中的元素的最大个数列表是由链表doubly linked list组成的,数据由若干个节点构成,每一个节点都包含一个信息块、一个前驱和一个后驱指针。不能随机访问。头文件#include。除了支持所有顺序容器都有的成员函数以外,还有:push_front:在前面插入pop_front:删除前面元素sort:排序,list不支持STL的算法sortremove:删除和制定值相等的所有元素unique:删除所有和前一个元素相同的元素merge:合并两个链表,并清空被合并的那个reverse:颠倒链表splice:在制定位置前面插入另一个链表中的一个或多个元素,在另一个中删除被插入特点:不适用连续的内存空间;可以在内部的任何位置快速地插入或删除;不能进行内部的随机访问,即不支持和vector.at();相对于vector要占用更多的内存。双端队列头文件#include。关联容器associative container能通过关键字search key直接访问,即存储和读取元素。集合和多重集合类提供了控制数值集合的操作,其中数值是关键字;映射和多重映射类提供了操作与关键字相关联的映射值mapped value的方法,用于快速存储和读取关键字与相关值(关键字/数值对,key/value)。头文件#include和#include。映射map中插入:insert。模板:44) 模板:实现代码重用机制的一种工具,可以实现类型参数化,即把类型定义为参数,从而实现代码的可重用性。而且能够减少源代码量并提高代码的机动性,而不会降低类型安全。类模板和函数模板。泛型编程:用独立于任何特定类型的方式编写代码。可以说,类是对象的抽象,模板又是类的抽象,用模板能定义出具体类。函数模板的一般定义形式:template 返回类型 函数名(函数形参表)/函数定义体;模板形参表不能为空,分为:模板类型参数,代表一种类型;模板非类型参数,代表一个常量表达式。模板非类型参数:整形或枚举;指针类型(普通对象的指针、函数指针、成员指针);引用类型(指向对象或者指向函数的引用)。class和typename相同,当有多个模板参数时需要在前面都加上class或typename。类模板:template class 类名/类定义;;成员函数不能被声明为虚函数,类模板不能和另外一个实体的名称相同。如果在类模板之外定义它的一个成员函数,就必须在每一个函数前面加template 。若此成员函数中有模板参数T存在,则需要在函数体外进行模板声明,并且在函数名前的类名后面缀上“T”。函数模板与模板函数。类模板与模板类。类模板的实例化:类名 对象名。编译模板代码定义了两种模型:包含编译模型Inclusion Compilation Model和分离编译模型Separation Compilation Model。在这两种模型中,构造程序的方式基本相同,类定义和函数声明都放在头文件(.h文件)中,而函数定义和成员定义则放在源文件(.cpp文件)中。包含编译模型:在头文件中添加一条#include语句指示定义可用即可,该#include引入了包含相关定义的源文件(.cpp)。分离编译模型:编译器会为我们跟踪相关的模板定义。可以通过在模板定义中的关键字template之前加上关键字export来声明一个可导出的函数模板(.h)。在程序中一个函数模板只能被定义为export一次。对于类模板,应该在类的实现文件中使用export(.cpp)。把类模板的接口放在头文件中,而把具体实现放在源文件中。特化:特殊化、特殊处理。可分为全特化和偏特化。可以为类增加成员变量或者成员函数。有三种类型:特化为绝对类型;特化为引用、指针类型;特化为另外一个模板类。函数模板特化标志:template ,函数模板特化可以声明而无须定义。类模板特化时,还需要特化该类模板的所有成员函数为普通函数,原来模板函数的每个Type也相应的特化为特定的类型,所以又称全特化。特化标志template 。只有当通用的类模板被声明不一定被定义之后,它的显式特化才可以被定义,即在模板被特化之前编译器必须知道类模板的名字。即使我们定义了一个类模板特化,也必须定义与这个特化相关的所有成员函数或静态数据成员。类模板的通用成员定义不会被用来创建显式特化的成员的定义,这是因为类模板特化可能拥有与通用模板不同的成员集合。偏特化partial specialization:某些模板参数已经被实际的类型或者取代,又叫部分特化。当程序声明了类模板部分特化时,编译器将为实例化选择最特化的模板定义,当没有特化可被使用时,才使用通用模板定义。偏特化可能拥有与通用类模板完全不同的成员集合。类模板偏特化必须有它自己对成员函数静态数据成员和嵌套类的定义。类模板的成员的通用定义不会被用来实例化类模板偏特化的成员。C+标准库:45) C+标准库(Standard Library)是按照C+对标准库的要求而建立的一套库,包含大量的函数和算法。标准库的一切几乎都是模板。标准库的组成:语言支持:language support,包含了一些标准类型和其他特性的定义;诊断:diagnostics,包含异常处理exception handling、断言assertions、错误代码error number codes;通用工具:general utilities,例如动态内存管理工具,日期、时间处理;字符串:string,用来代表和处理文本;国际化:internationalization,采用locale和facet为程序提供国际化支持;数值:numerics,对数字处理的支持;输入/输出:input/output,是对原有标准库中的iostream进行模块化的部分。标准模板库standard template library,STL是基于模板的,包含算法、容器、迭代器、函数对象、适配器。基于数据和操作分离的。迭代器iterators是STL的一个重要组成部分。定义格式:声明迭代器的格式: iterator 迭代器变量名;有5种迭代器,而且对于不同数据结构有下表:输入input输出output前向forward双向bidirectional随机访问random accessvectorlistdequesetmultisetmapmultimap使用迭代器的操作有(iter和iter1表示迭代器):序号迭代器运算说明1input*iter存入迭代器所指向的元素值,等式的左侧2inputiter=iter1复制地址3inputiter=iter1=或!=,比较4output*iter同15outputiter=iter1同26forwarditer+,+iter逐元素向前移动7bidirectioniter+,+iter同68bidirectioniter-,-iter逐元素向后移动9random accessiteri容器第i个元素10random accessiter+i+或-,向前或向后移动i个元素11random accessiteriter1或=,返回真假12random accessiteriter1, iter=iter1返回真假13random accessiter+=i+=或-=算法提供了数据处理函数,利用模板函数技术构建的。被定义在algorithm头文件中,使用时必须载入该文件。数据编辑算法:filltemplatevoid fill(ForwardIterator first, ForwardIterator last, const T&value);value填充copytemplateOutputIterator copy(InputIterator first, InputIterator last, OutputIterator result);复制first, last范围到始于result的位置mergetemplateOutputIterator merge(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result);first1, last1和first2, last2合并存放在以result开始位置removetemplateForwardIterator remove(ForwardIterator first, ForwardIterator last, const T&value);移除first, last内为value的元素,后往前复制replacetemplatevoid replace(ForwardIterator first, ForwardIterator last, const T&old_value, const T&new_value);new_value替换old_value查找算法:findtemplateInputIterator find(InputIterator first, InputIterator last, const T&value);查找value是否出现searchtemplateForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2);在fisrt1, last1中查找first2, last2是否存在比较算法:equaltemplatebool equal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2);判断是否与以first2开始的对象对应相等mismatchtemplatepair mismatch (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2);返回pair类对象,相等两iter指向各自的end()排序算法:sorttemplate void sort(RandomAccessIterator first, RandomAccessIterator last);默认升序reversetemplate void reverse (BidirectionalIterator first, BidirectionalIterator last);反转swaptemplate void swap(T& a, T& b);交换a和b计算相关算法:counttemplate typename iterator_strits:difference_type count(ForwardIterator first, ForwardIterator last, const T& value);查找value次数max_elementmin_elementtemplate ForwardIterator max_element(ForwardIterator fist,ForwardIterator last);最大最小transformtemplate OutputIterator transform(InputIterator first1, InputIterator last1,OutputIterator result, UnaryOperator op);进行op操作for_eachtemplate Function for_each (InputIterator first, InputIterator last, Function f);用f处理函数对象是一个由模板类产生的对象,该模板类只有一个用于重载的operator()函数。 在算法中使用函数对象方法是,先通过调用带数据类型的默认构造函数,建立一个函数对象,然后就可以在容器或算法使用该函数对象。函数对象使用的数据类型必须与容器所容纳的数据类型相同。运算函数对象功能说明算术plus两个类型为T的参数相加,并返回相加的和算术minus两个类型为T的参数相减,并返回相减的差算术times两个类型为T的参数相乘,并返回相乘的积算术divides两个类型为T的参数相除,并返回相除的商算术modulus两个类型为T的参数的余数,并返回余数算术negate返回类型为T的参数的相反值比较equal_to两个类型为T的参数,若相等则返回true,反之返回false比较not_equal_to两个类型为T的参数,若不相等则返回true,反之返回false比较greater两个类型为T的参数,若前者大于后者则返回true,反之返回false比较less两个类型为T的参数,若前者小于后者则返回true,反之返回false比较Less_equal两个类型为T的参数,若前者小于或等于后者则返回true,反之false比较greater_equal两个类型为T的参数,若前者大于或等于后者返回true,反之false逻辑logical_and两个类型为T的参数,返回它们“与”运算的结果逻辑logical_or两个类型为T的参数,返回它们“或”运算的结果逻辑logical_not类型为T的参数,返回它的“非”运算的结果自定义函数对象:一是建立函数对象类,二是建立模板函数对象类。适配器和顺序容器相结合,提供了堆栈、队列和优先队列的功能。适配器有三种类型:容器适配器、迭代器适配器和函数对象适配器。容器适配器用于将顺序容器转换成另一种容器。也就是以顺序容器为基础,修改后得到新的容器。容器适配器并不是真正的容器,因此无法使用迭代器。各种容器适配器的特征:容器名头文件可被转换的容器特征stackstack以vector、list、deque产生,默认为deque只从一端插入和删除,遵循后进先出queuequeue以list、deque产生,默认为deque只从一端插入和删除,遵循后进先出priority_queuedequefunctional以vector、deque产生,默认为vector容器内各个元素按照指定顺序排列。插入时,直接插入到某一个位置。移除时,从最顶端开始移除。容器的成员函数:成员函数功能说明stackqueuepriority_queuepush在容器顶端增加一个元素pop在容器顶端删除元素top返回容器顶端元素的引用size返回当前元素个数empty容器无元素返回true,否则falsefront返回容器前端元素back返回容器末端元素stack容器的建立形式:template class T, class Container = deque class stack;Container为要使用的容器类型,默认为deque类型。 中有一个空格。C+字符串类是一个可变的字符串类,它的构造函数有多个。如下:explicit string();字符串值为空串string(size_type length, char ch );字符串值为length个ascii码为ch的字符string(const char *str );字符串值为str中的字符string(const char *str, size_type index);字符串值为str的第index开始的所有字符string(const char *str, size_type index, size_type length);字符串值为str以index开始的length个字符template string (InputIterator first, InputIterator last); 字符串值为(first,last)范围内的字符iostream标准库可以用来读写C+标准数据类型的数据,也可以用来读写string对象。ostream& operator (istream& is, string& str);读取输入流对象is中数据赋值给stristream& getline ( istream& is, string& str, char delim); 而且getline不忽略行开头的换行符没有delim时获得单行字符串内容,否则可以获得多行字符串内容字符串的赋值:assignstring& assign ( const string& str );字符串对象值为常量str的值string& assign ( const string&, size_type index,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高温雨季防火工作方案培训
- 秋季校园安全排查规范
- 组合鞋底项目环境影响报告书
- 校园学风建设推进实施方案
- 人工挖孔桩作业风险管控方案
- 工程项目施工质量保证体系培训
- 审计学专业学习计划
- 矿山地质环境恢复治理规程
- 城市路灯照明节能改造与运维技术方案
- 液化石油气火灾的危害与扑救培训课件
- 多源数据融合预警模型-第2篇-洞察与解读
- 结直肠癌分子病理检测临床实践指南(2025版)
- 矿山三违考核制度
- 西药执业药师药物经济学应用案例集试卷
- 黑龙江大学《审计学》2025 学年第二学期期末试卷
- GB/T 46639.5-2025铸造机械术语第5部分:冲天炉、浇注设备和浇包
- 口腔护士种植课件
- KNX智能家居系统培训资料
- 2025-2026学年广东省深圳实验学校初中部八年级(上)期中英语试卷
- 出生医学证明警示教育培训
- 困困困不醒大王原创课件
评论
0/150
提交评论