2年,C++标准委员会发布了标准的一个重要修订版,即C+,揭开了C++发展的新篇章。目前,许多程序设计竞赛和相关考试都已经提供了支持C+程序运行的编译器。本书的代码完全采用C+的语法进行编写,并力求帮助读者养成一种良好的C+代码编写风格,在程序设计竞赛和相关考试中能够快速而准确地编写代码。
除了介绍C+新特性之外,本书还会详细介绍各类基础的数据结构和算法。本书的具体内容个部分:C+基础、C+标准库简介、算法基础、数据结构基础、C++标准库进阶。本书主要面向计算机专业零基础的学习者,特别适合作为学习C++语言、数据结构与算法的入门书籍,也可作为计算机专业研究生入学考试复试上机考试、各类算法考试和算法竞赛的辅导书籍。
(责任编辑邮箱:jinacmp@163.com)
我是一名在计算机这门学科上开窍比较晚的学生,在本科一年级下学期,我通过转专业的方式进入了计算机专业,当时也并不是多么喜欢计算机这个专业,只是觉得原专业并不适合我,然后便“随意”地选择了计算机专业作为我的转入专业。现在想起来不禁要感谢当初的自己,因为在后来的学习过程中我的确爱上了“编程”这项工作。当然,这段学习过程并没有那么一帆风顺 由于我本科阶段都是“浑浑噩噩”地度过的,没做什么实事,成绩自然不理想,保研已经毫无希望,于是我决定报考浙江大学计算机学院的研究生。由于浙江大学计算机学院研究生的机试成绩可以使用甲级成绩代替,我决定在本科三年级的寒假准备甲级考试。在朋友们的推荐下,我购买了胡凡师兄的《算法笔记》,开始夜以继日、孜孜不倦地狂刷甲级乙级题库。在这个过程中我不仅感觉自己的编程能力得到了很大提升,更重要的是我似乎感受到了编程的魅力,开始真正喜欢上了编程这项工作。可以说,胡凡师兄的《算法笔记》是我学习数据结构与算法的真正启蒙书,我由衷地感谢胡凡师兄能够严谨细致地完成《算法笔记》这部有启发意义的著作 在枯燥、痛苦与快乐交织在一起的刷题过程中,我开始尝试着为每一道题编写自己的博客。后来的事实证明,对程序员来说,编写博客的确是一件非常有意义的事情。在我编写博客的过程中,有许多同学和朋友在社区中给予我鼓励和支持,这使我受到了莫大的鼓舞,在这里对他们致以由衷的感谢 由于我系统学习过C+语法,博客中引用的代码便大多以C+语法的形式给出。这使得相对于网络上给出的同一题的代码中,我的代码总会显得更加简洁,也更少。我开始越发感受到C+的强大魅力,并在博客中尽可能多地利用C+的新特性来解题。但是,网络上的博客终究不系统,许多相似的题目和解法不容易联系在一起,随着我编写的博客越来越多,这种感觉在我脑海中越发强烈。后来有人咨询我是否有兴趣在已发表的博客基础上,撰写一本系统介绍C+与相关题目求解方法的书籍,我开始萌发了编写一部书籍的想法。但是面对编撰书籍的繁杂工作和硕士期间的学业压力,这个看似简单却并不简单的想法又开始动摇了。我咨询了包括胡凡师兄在内的许多师兄师姐,他们切实的回复以及吉玲编辑对本书的莫大兴趣让我下定决心开始撰写本书籍 在经历了无数个日日夜夜的辛苦工作、无数次的编辑和修订后,我的工作成果终于送到了读者的手上。希望它能让读者满意!但是,由于我水平有限,尽管对本书进行了多次校对,书中可能仍有一些有待改进的地方,敬请广大读者提出宝贵建议 日沉云起于杭州
关
部分C+基础章C+简2
从“Hewo”
3
算 4
4
浮
4
布
字面值
6
算术运
递增和递减运
逻辑运算符和关系运
条件运
位运
赋值运算符和复合赋值9
代用运
9
语
wh语
do-wh语句 11
语句11
br语句和conti语句
g语
C++的输入14
用来输
用c来输
优化cin/c19
C 语言的输入输20
sc20
print
算术类型的类型转
算术类型的隐式类型转
算术类型的显式类型转
算术类型数据运算时可能出现25
整型数据的数据溢出错
浮点数类型的相等性比26
例题剖
例题与习第2 章C+程35
35
引用的基本概
拷贝赋值与引用赋
37
V23
函数基
传值调用与传引用调
指针做函数形
函数重
默认参
C++标准库中的常用数学函
内置数
一维数
数组与指
二维数
多维数
数组做函数形
字符串(1):strin
str的初始
str的输入与输
字典序比
str中内置的字符串操
C++标准库中的常用字符处理函
例题剖
字符串(2):字符数
字符数组的初始化和存64
字符数组的输入与输
cstr头文件中处理字符数组66
2C++语67
类型别
co67
a类型说明
录
范围语句
类和对
类的定义和实例
构造函
成员函
再谈变
全局变量和局部变
全局区、栈区、堆
变量的默认初始化、值81
注意控制数组和容器83
再谈引
例题剖
例题与习
部分C+标准库简章准备知
时间复杂
空间复杂
be成员和成员
迭代器运算
迭代器操
迭代器的类型
迭代器范围
反向迭代器
p
tu
章顺序容器
顺序容器概览
顺序容器对象的定义和初始化
顺序容器的大小操作和赋
访问元素
添加元素
删除元素
vec、str、ar、de迭代器的其
例题剖析
再谈str
构造str的其他方法
修改str的其他方法
str搜索操作
数值转换stringstr:按任意字符分割
例题剖析
例题与习题
泛型算法
泛型算法概览
自定义排序
比较规则代码的编写
重载小于运算符
比较函数函数对象/仿函数
与内置小于运算符相反
排名
总结
例题剖析
泛型算法大观园
只读算法
写算法
排序与划分算法
在有序序列上的泛型算法
堆操作算法
排列算法
最大值最小值算法
数值算法
例题剖析
5 l容器特有的算法
例题与习题第6 章容器适配器
容器适配器概览
st
qu
priority_qu
第7 章关联容器
关联容器概览
关联容器对象的定义和初始化
关联容器的共有操作
和unordered_的下
有序关联容器的二分查找操作
关联容器对关键字类型的要求