




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一,字面值 1,字面值分类 整形字面值: 20,076, 0X14 浮点字面值: 128u, 1L 布尔字面值和字符字面值: bool test = false , a ,La 非打印字符的转移序列: n ,t , b 字符串字面值:“ Hello ” 留意:只有内置类型有字面值,没有类类型字面值 二,左值,右值 左值:可以显现在赋值语句左边,也可以在右边显现 右值:只能在赋值语句右边显现,不能显现在赋值语句左边 三, 变量名(即变量的标识符) 头 :由字母,数字,下划线组成,但是只能由字母,下划线开 标识符,关键字,操作符关系(集合表示) 标识符 关键字 操作符 四,初始化 直接初始化:把初
2、始化放在括号中(例如: int val1024; ) 简洁初始化:把初始化放在“ =”右边 例如: int val = 1024; 初始化内置元素是没有区分的, 但是初始化类类型对象仍是有微小的差别的, 类对象用直接 初始化时直接调用与实参匹配的构造函数, 而用复制初始化总是调用复制构造; 特别地, 由 于 IO 类型对象不能复制,全部对那些类型对象不能复制初始化 五,标准库 String 类型 1,初始化方式: string s1; 用默认构造函数初始化, s1 为空字符串 string s2s1; string s3value; 用字符串字面值初始化 string s4n,c; 用 n 个
3、字符 c初始化 2, string 对象的操作 s.empty; s.size; /相当于 strlen,返回的是 string:size_type 类型 sn; s1+s2;s1 =s2; s1 = s2;s1=s2;s1 .= s2 第 1 页,共 8 页3,为什么要 s.size用 string:size_type 类型而不是 int 类型 由于一些机器上 int 类型表示范畴太小, 而一些 string 对象所包含的你内容可能 太 大(比如文件) ,导致溢出,因此不能用 int 表示,更倾向用比它大一倍的 string:size_type ; 4, string 对象字符的处理 使用之
4、前第一要包含头文件 # include isalnumc, isalphac等等 六,标准库 vector 类型 声明: vector 不是数据类型,而只是一个类模板 vector , vector 等等 1,初始化: vector v1; vector v2v1; vector v3n,i; 例如: vector ivec1; vectorivec2ivec1; vectorivec310,-1; ,可以用来定义多种数据类型,像 vector ivec410 /10 elements,each initialized to 0 vectorsvec10 2, vector 对象的操作 v.e
5、mpty; v.size; v.push_backt; v1 = v2; /10 elements,each an empty string v1 = v2;v1 .= v2; v1 = v2; 3,拜望 vector 容器的方式 第一,利用下标操作符 其次,利用迭代器 例如: vector ivec; int val; for vector:size_type ix=0;ix .= 10; +ix cinval; ivec.push_backval; for vector:size_type ix=0;ix .= ivec.size;+ix ivecix+= 1; cout ivecix e
6、ndl; for vector:iterator iter =ivec.begin; iter.=ivec.end; +iter *iter += 1; 第 2 页,共 8 页cout *iter endl; 七, void * 指针使用要点 1,可以指向任意类型的对象 2, 这类指针复制给某一类型的指针,必需经过强制类型转化,否就编译器会报错 例子: int i=3; int * pA= &i; void * pB = &i; void * pC = pB; int * pD; pD = pC;/error pD = static_castpC;/ok 八,不能用 auto 变量的地址去初始
7、化 static 型指针 错误例子 main inti; *p=&i; static int /. 九,指针变量必需先赋值 ,再使用 main int i=10; int *p; *p=i; /危险 cout*p; 十,函数 内联函数 1.定义:在调用处开放函数代码 2.使用内联函数的好处:可以防止函数调用的开销 3.要求:在函数代码简短和调用次数较少情形下,调用内联函数 4.内联函数应当放在头文件中,这一点不同于其他函数,如在头文件中加入或 修改内联函数时,使用了该头文件的全部源文件都必需重新编译 重载函数 十一,次序容器 vector , list , deque 1,初始化 C c; C
8、 c1c2; C cb,e; 第 3 页,共 8 页C cn,t; 2,容器需要中意以下约束 元素类型必需可以支持赋值运算 元素类型对象必需可以复制( 3,迭代器 全部容器供应的运算: *iter iter-mem +iter -iter iter+ iter- iter1 = iter2iter1 .= iter2 IO 对象不行以复制) vector 和 deque 供应额外的运算 算术运算(只适用于 vector, deque): iter+niter-n iter1 += iter2iter1 -=iter2iter1 -iter2 关系运算(只适用于 vector, deque):
9、, = , , , = , =, .= , , =) 8,与容器大小相关的操作适用于整个容器 c.size c.max_size 返回 c 可容纳的最多元素个数 c.empty 返回布尔类型 c.resizen c.resizen,t for example: listilist10,42;/10ints:each has value 42 ilist.resize15;/add 5 elements of value 0 to back of ilistilist.resize25,-1;/add 10 elements of value -1 to back of ilist.resize
10、5;/erase 20 elements from the back of ilist ilist 9,拜望元素 c.front 返回 c 第一个元素的引用,假如 c.back返回 c 最终一个元素的引用,假如 c 为空,就该操作未定义 c 为空,就该操作未定义 cn 返回下标为 n 的元素的引用,假如 c 为空,就该操作未定义 c.atn返回下标为 n 的元素的引用,假如 c 为空,就该操作未定义 10,删除元素 c.erasep返回一个迭代器,指向被删除元素后面的元素 c.eraseb,e c.clear返回 void c.pop_back 返回 void c.pop_front 返回 v
11、oid (只适用于 list, deque) 11,赋值操作符(适用于整个容器) c1 = c2 删除 c1 全部,然后将 器类型)必需相同 c2 元素复制给 c1,c1,c2 类型(元素类型,容 c1.swapc2 c1, c2 类型必需相同,速度要比 c2 复制到 c1 快 c.assignb,e c.assignn,t12,容器的选择 假如程序要求随机拜望,就应使用 vector 或 deque 假如程序必需在容器的中间位置插入或删除元素,就用 list 假如要在首部或尾部插入或删除元素,就应用 deque 假如只需要在输入时在容器的中间位置插入元素, 然后需要随机拜望元素, 就可 考虑
12、在输入时将元素读入到一个 list 中,接着对此容重视新排序,使其次序拜望, 然后将排序后的 list 容器复制到一个 vector 中 十二,关联容器 1, pair 类型定义在 #include 初始化 pairp1;/holds two strings pairp2Marcel,Proust;make_pairJames,Joyce; 相关的操作 p1p2 ,p1=p2 第 5 页,共 8 页p1.first , 作 2,关联容器不供应 front , back, push_front , push_back, pop_front , pop_back 操 初始化: C c; C c1c
13、2; C cb,e; 次序容器和关联容器的公共操作: 关系运算 begin, end, rebegin, rend 赋值操作(不供应 assign 函数) clear, erase 操作(但 erase 返回的是 void ) 关于容器大小的操作(不包括 resize) 3, map 类型 初始化 mapm; mapm1m2; mapmb,e map 定义的类型 map:key_type map:mapped_typemap:value_type (一个 为 mapped_type) pair 类型, first 元素为 const key_type,second 元素 添加元素 用下标操作符
14、实现 mapword_count;/empty map word_countAnna=1; 注:假如该键存在,就该下标操作与 vector 行为类似 该键如不存在, 就容器将创建一个元素插入到该容器的对象中, 此时, 所关联 的值接受值初始化,而内置类型元素就初始化为 0 insert 运算 m.inserte e 是 value_type 类型,假如键( )不在 m 中,就插入 e.second; 假如存在,就保持 m 不变,返回 pair 类型,包括指向 元素的迭代 器,以及一个 bool 类型对象 for example: word_count.insertmap:value_typeA
15、nna,1; word_count.insertmake_pairAnna,1; m.insertbeg,end m.insertiter,e 查找并读取 map 元素 m.countk 返回 m 中 k 的显现次数 m.findk 假如按 k 索引存在,就返回指向该元素的迭代器;假如不存在, 第 6 页,共 8 页就返回超出末端迭代器 删除元素 m.erasek删除 m 中键为 k 的元素;返回 m.erasep返回 voidm.eraseb,e返回 void 4, set 类型单纯的键的集合(不供应下标运算) 初始化与 map 一样 size_type 表示删除元素个数 定义的类型:与 m
16、ap 有区分的是 value_type, 在 set 中, value_type 不是 pair,而 是 key_type 添加元素 setset1; set1.insertthe; set1.insertand; vectorint ivec10; Setiset2; Iset2.insertivec.begin,ivec.end; 查找并猎取元素与 map 一样 iset.find1 iset.find11 iset.count1 iset.count11 multimap 和 multiset_ 头文件与 map, set 一样 十三,标准库 multimap :一个键对应多个值,不支持
17、下标运算 String 类型 1,头文件: #include using std:string; 2,初始化 string s1; string s2s1; string s3value; string s4n,c; string scp cp 指向 C 风格字符串 string scp,n 初始化为 string ss2,pos2 string ss2,pos2,len2for example: char * cp = Hiya; cp 所指向的前几个元素 char c_array = World.; string s1cp;/s1 = Hiya string s2c_array,5;/s2 =World
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 投资理财服务合同范文
- 常年法律顾问合同细则
- 购房合同定金简易协议
- 江西丰城劳动合同范本
- 智能通风电器具产业发展挑战与对策考核试卷
- 机织服装生产中的生产流程标准化考核试卷
- 塑料加工中的耐冲击与抗跌落技术考核试卷
- 期货市场投资者行为分析服务考核试卷
- 抽纱刺绣工艺的数字化营销策略考核试卷
- 基于云计算的智能制造服务考核试卷
- 市政工程标准施工组织设计方案
- 马尔文粒度仪MS2000原理及应用
- 护理不良事件管理、上报制度及流程
- GB 9706.224-2021医用电气设备第2-24部分:输液泵和输液控制器的基本安全和基本性能专用要求
- 钢栈桥施工与方案
- 《艺术学概论》课件-第一章
- 子宫内膜异位症诊疗指南完整课件
- 动物寄生虫病学课件
- 人教版小学三年级下册数学应用题专项练习题40614
- 短视频抖音运营培训课程
- 生产安全事故应急预案管理办法知识点课件
评论
0/150
提交评论