码迷,mamicode.com
首页 > 编程语言 > 详细

读书笔记之:C++ Primer (第4版)及习题(ch01-ch11) [++++]

时间:2016-04-20 16:26:41      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:

读书笔记之:C++ Primer (第4版)及习题(ch01-ch11) [++++]

第2章 数据和基本类型

1. 整型

技术分享

2. 习题:左值和右值

技术分享

3. C++关键字/保留字和操作符替代值

技术分享

4. 声明,定义, 初始化和赋值是不同的概念。

声明是说明一个变量的存在,不会为变量进行内存空间的分配。

定义是说明一个变量的存在,同时为这个变量分配对应的内存空间。

初始化就是在进行变量定义的时候在所分配的内存空间中同时填入有意义的值。如果不进行初始化的话,变量虽然有对应的内存空间,但是内存空间中对应 的内容却是无意义的。

赋值是为已经存在的变量的改写值,也就是重新擦写变量内存空间的数据,填入新的数据。

C++中因为有类的存在所以,对初始化进行了更细的划分,分为直接初始化和复制初始化。

C++对于变量的初始化规定了一些规则:内置类型和类类型是不一样的,内置类型在函数体外自动初始化为0,函数体内不进行初始化。而类类型的话是调用类的默认构造函数。

技术分享

技术分享

5. const变量/对象的初始化

技术分享

技术分享

6. 引用声明后就必须初始化,并且一经初始化就不能再改变。

技术分享

不能使用const变量来初始化非const引用。

7. 定义变量和定义类成员变量是不一样的。

技术分享

 

第3章 标准库类型

1.string对象的读写

技术分享

下面的代码可以从输入不断的读入单词。

技术分享
int main(){
string word;
while(cin>>word)
cout<<word<<endl;

}
技术分享

上面的程序的大致输出是这样的:

如果从标准输入读入的话,产生的结果是这样的:每次按回车键之后才产生输出。主要cin是从缓冲区读取输入的,只有每次按下回车键的时候才将缓冲区进行刷新。

技术分享

如果是使用管道来进行输入的话,结果是这样的

技术分享

可以看到单词是通过空白符(空格,回车,制表符)进行划分的。而结束是根据文件结束符进行判断的。

技术分享

技术分享

getline的使用方法如下:

技术分享
int main(){
string line;
while(getline(cin,line))
cout<<line<<endl;
}
技术分享

技术分享

 

8. bitset类型

技术分享

技术分享

技术分享

 

第4章 数组和指针

1. 指针与引用

技术分享

2. 动态数组的初始化

技术分享

 

第5章 表达式

1. C++中前置操作符还是后置操作符

技术分享

2. 动态创建对象时的默认初始化。

技术分享

3. 删除const对象,使用delete来收回内存

技术分享

4. C++中的类型转换

技术分享

 

第6章 语句

1. 标准库异常

技术分享

第7章 函数

1. 形参与实参:形参是变量,实参是表达式。

技术分享

2. const形参

对于C++内置类型,由于采用的是值复制的方式,所以加const与否都是无影响的。

技术分享

如果形参是引用的形式,采用const和非const的情况就不一样了。

3. const成员函数

技术分享

4. 构造函数

默认构造函数,构造函数的初始化列表

5. 实参类型的转换

C++支持函数重载,所以就存在函数的匹配问题。在进行函数匹配的过程中,如果没有找到最佳匹配的话,需要进行实参类型的转换来寻找次优的匹配。

技术分享

6. const参数与重载

技术分享

技术分享

7. 习题,枚举类型对象只能用同一枚举类型的另一对象或一个枚举成员进行初始化。

技术分享

8. const引用形参

下面的函数是错误的

void swap(const int &a,const int &b){

int tmp=a;

a=b;

b=a;

}

技术分享

const在此处的用法就是防止对传入形参的修改。

 

下面的函数也是错误的:

void swap(const int *a,const int *b){

int tmp=*a;

*a=*b;

*b=tmp;

}

技术分享

const的作用就是说明指针指向的地方是只读的,不允许修改。

 

9.C++中函数指针的不同写法

技术分享

函数重载存在时,必须对函数指针进行精确的匹配

技术分享

 

第8章 标准IO库

1. IO流类的继承关系以及所在的头文件

技术分享

2. IO对象不可复制或赋值

技术分享

3. C++中的IO流的最大的特点就是有流的状态,可以通过判断流的状态

技术分享

 

4. 文件流对象的使用

技术分享

技术分享

技术分享

 

 

第9章 顺序容器

1. 顺序容器中定义的类型

技术分享

2. swap操作节省删除元素的成本

技术分享

3. vector容器的自增长

技术分享

5. string中的substr,append和replace操作

技术分享

 

6. string类型的操作操作,这个其实挺重要的,可以借助这个类find操作完成很多工作。

技术分享

 

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

下面是string几个查找函数的例子:

技术分享View Code

技术分享

技术分享View Code

技术分享

下面的程序不严格的事这个习题的程序,该程序只是找到一个个的单词。

技术分享View Code

第10章 关联容器

1.STL中的关联容器

技术分享

在C++11中添加了unordered_map,unordered_set,unordered_multimap,unordered_multiset. 这四个容器其实就是常见的hash_map,hash_set, hash_multimap, hash_multiset

2. pair类型

技术分享

  3. map容器定义的类型

技术分享

对map迭代器进行解引用得到的是pair类型

4. map下标访问的特殊之处

技术分享

5. map的insert操作

技术分享

统计单词数目的一个简单程序:

技术分享View Code

6. map中的查找操作:count和find函数

技术分享

技术分享

7. 一个简单的单词转换程序

技术分享View Code

运行结果如下:

技术分享

8. map,set,list差异

技术分享

9. set的定义与使用

技术分享

10. 利用set来排除一些常见的单词,这样在统计的时候就避开了常见的单词

技术分享View Code

11. 容器的综合应用:文本查询程序

技术分享View Code

以该程序源文件为输入的话,有下面的输出:

技术分享

12. 常见常用容器总结

技术分享

技术分享

第11章 泛型算法

1. 插入迭代器

技术分享

2. iostream迭代器

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

3. 使用copy算法将文件写入到输出:

技术分享

技术分享View Code

4. 三种迭代器

技术分享

5. 迭代器分类

技术分享

技术分享

技术分享

技术分享

技术分享

 

 

 

读书笔记之:C++ Primer (第4版)及习题(ch01-ch11) [++++]

标签:

原文地址:http://www.cnblogs.com/wohenben/p/5413206.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!