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

读书笔记之: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几个查找函数的例子:

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

第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操作

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

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

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

运行结果如下:

8. map,set,list差异

9. set的定义与使用

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

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

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

12. 常见常用容器总结

第11章 泛型算法

1. 插入迭代器

2. iostream迭代器

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

4. 三种迭代器

5. 迭代器分类

时间: 2024-11-08 21:29:59

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

读书笔记:C++ Primer系列(11)—— 表达式

定义: 表达式(expression)是由一个或多个操作数(operand)通过操作符(operator)组合而成. 1. 操作符--除法(/)和求模(%) 注意: 除法和求模两种运算,操作数都必须是整型,包括:bool.char.short.int和long类型,以及对应的unsigned类型 如果两个操作数为正,除法和求模操作的结果也是正数或为零: 如果两个操作数为负,除法操作的结果为正数或为零,而求模的结果为负数或为零: 如果两个操作数,一个为正一个为负,除法和求模的结果取决于机器:如果求

读书笔记:C++ Primer系列(12)—— 类型转换

题记:类型转换就是将给定类型的表达式转换为另一种类型.C++中的转型可分为两种:隐式类型转换和显式类型转换. 隐式转换 隐式转换不需要任何转换运算符,编译器会自动根据类型兼容性进行不同类型之间的转换.一般情况下,在C/C++中这种转换多出现在基本数值类型上,其基本原则就是所需内存小的类型可以直接转换成内存大相同的或者. 例如: int a=0; a=3.1415+3; 运行结果为:6 解释: 上述加法操作中,其操作数是两个不同类型的值:3.1415是double类型的字面值常量,3是int类型的

《高可用MySQL》读书笔记1 – Windows环境下压缩版MySQL安装

近日在读O'REILIY系列的<高可用MySQL>, 自然少不了主从(Master-Slave)配置和横向扩展相关的内容.Master-Slave这东西吧,在许多公司都是标配,开发中基本天天都用,遇到的问题自然也不少(如主从不同步,Master宕机),但操作权限非常有限.有些东西,只有自己看了.做了,才能真正知道原理是什么,也才能更好的去把握. 本文是高可用MySQL的第一篇读书笔记,主要记录Windows环境下压缩版MySQL(基于安装版的傻瓜式安装过程这里不再提及)的安装过程. 1. 从官

【读书笔记】&lt;C++ Primer Plus&gt;第2章:开始学习C++

这章非常基础.简单,过于弱鸡的就不多说了.直接粗暴点以一个在vs2012新建一个空项目并输出Hello,world开始吧. 浅释一下程序: #include <iostream>    //预处理编译指令 #include 将 iostream 文件的内容添加到程序中 int main() {     using namespace std;    //使用 std 命令空间从而让下方的 cout 可用     cout << "Hello,world.";  

【读书笔记】C Primer Plus ch.15位运算 示例程序15.3 定义并使用字段

通常,把位字段作为一种更紧凑储存数据的方式. 程序清单 15.3 fields.c 1 #include <stdio.h> 2 #include <stdbool.h> 3 // 线的样式 4 #define SOLID 0 // 实线 5 #define DOTTED 1 // 点线 6 #define DASHED 2 // 虚线 7 // 三原色 8 #define BLUE 4 9 #define GREEN 2 10 #define RED 1 11 // 混合色 12

读书笔记--《Python基础教程第二版》--第六章 抽象

6.1 懒惰即美德 >>> fibs=[0,1] >>> for i in range(8): ...  fibs.append(fibs[-2]+fibs[-1]) ... >>> fibs [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] 6.2 抽象和结构 page=download_page() freqs=compute_frequencies(page) for word,freq in freqs: print word

读书笔记:C++ Primer系列(14)—— C++函数及参数传递

一.函数 实际项目中,要实现的功能不是仅靠一些基本语句就可以实现的,通常需要将这些大的功能进行分解,分步骤完成.例如:要实现一个学生信息管理系统, 一个学生信息管理系统至少包括学生信息的 添加.查询.删除.修改等功能, 这些功能要求就是对该系统的初步分解, 然后以查询功能为例对其继续分解, 查询 功能可以再次分解为由以下几个功能组成的模块: 获取用户查询信息: 到数据库查询该学生信息: 按照一定格式输出查询结果. 如果感觉该功能实现起来还是比较困难那么就继续分解, 直到可以顺利实现.这些功能分解

读书笔记--《Python基础教程第二版》--第2章列表和元组

第二章 列表和元组 2.1 序列的概览 序列:每个元素被分配一个序号  6种:列表.元组.字符串.Unicode字符串.buffer对象.xrange对象         序列可以嵌套序列          python容器的概念:序列.字典.集合 2.2 通用序列的操作 索引.分片.加.乘.属于.长度,最大值.最小值.迭代 2.2.1 索引 >>> greeting='Hello' >>> greeting[0] 'H' >>> greeting[-

【读书笔记】C Primer Plus ch.15位运算 示例程序15.1 整数转换成二进制字符串

正文: https://www.zybuluo.com/RayChen/note/595213

读书笔记--《Python基础教程第二版》--第七章 更加抽象

7.1 对象的魔力 多态 不同的类的对象使用同样的操作 封装 继承 7.1.1 多态 1.多态和方法 >>>object.getPrice() >>> 'abc'.count('a') 1 >>> [1,2,'a'].count('a') 1 >>> from random import choice >>> x=choice(['Hello world!',[1,2,'e','e',4]]) >>>