ACCELERATED_C++读书笔记

1.关于RETURN 0;

返回到调用这个函数的程序处,返回的值的类型必须与函数声明的返回类型一致。简单的 说就是 谁调用 RETURN 就返回给谁。

2.::操作符,也就是生存空间操作符。::左边的左边是生存空间的名字。比如在STD::COUT中,生存空间就是STD名字空间。::右边就是左边的 生存空间中定义的名字。STD::COUT的意思就是“名字COUT在生存空间(名字空间)STD中”。

3.关于main函数,如果省略了return语句的话,系统会假定它返回一个0。

4.对于std::string s

std::string z(n,c)定义累ixng为std:string的变量z。并且用字符c的n份复制来初始化 z。在这里,c必须是一个char类型。

s+t这个表达式的结果的类型是std:string,它包含s中所有字符的复制,并且在后面紧接着t所有字符的复制。(注解:即复制后连接在一起在输出)。

s.size()s中含有的所有字符的个数。

5.for(初始化语句 条件式 ;表达式)

语句体

浅显的来说等价于:

{

初始化语句

While (条件式){

语句体;

表达式;

}

}

如果一个变量定义在初始化语句中,那么在退出for语句时它会被销毁,所以在之后的语 句中就不能在访问这个变量了。

6.不对称空间的理解

(1) for (int r = 0 ; r != rows ; ++r){}

(2) for (inr r = 1 ; r <=rows ; ++r){}

(1)显然要比(2)好,一般来说 ,不对称的区间比对称区间容易使用,时因为:【m,n)形 式的区间有n-m个元素,而【m,n】形式的区间却有n-m+1个元素。

也就理解了为什么对于数组来说,下标时从0开始数 ,而不时从1开始数。

7.x++:把x增加1,并且返回x原来的值。

++x:把x增加1,并且返回x增加后的值。

8.vector<double> homework;

Homework的类型是vector<double>。Vector是一个容器,可以保存很多个值。当我们定义一个vector时,我们必须指定它将要包含的值的类型。Vector中的 每个元素都有一个相关的整数值,叫做元素的索引,比如homework[0]就是vector中的第一个元素。

比起立刻分配正确大小的内存来说,使用vector类型的对象可以根据输入来增长大小。

9.实参和形参

不管什么时候,只要我们调用调用函数,就必须提供相应的实参。实参可以是表达式,每个实参都被用来初始化对应的形参。初始化不是直接使用实参本身,而是使用的实参的值的拷贝。因为形参都带有实参的拷贝,所以也叫:传值调用法。

10.const vector<double>&,“包含double类型的vector的常量引用”。一个名字是一个对象的引用的意思是,这个名字是这个对象的别名。const vector<double>& hw = homework;hw是homework的别名。对hw的任何操作都等价于对homework做同样的操作。

11.const vector<double>&类型的形参,在这个 类型中,&用来告诉系统无须复制实参,而const保证程序不会改变形参,一个非常重要的技巧。

12.经验:避免一个单独的语句产生多个副作用。抛出一个异常是一个副作用,所以抛出一个异常的语句不应在在产生其他副作用,尤其是输入和输出。

13.迭代器(iterator):c++标准库提供了迭代器的类型系列,使用它可以按照标准库控制的方式来访问数据结构。

一个迭代器是一个值,它能够:

标识一个容易和容易中的一个元素;

允许检测元素中保存的值;

提供在容器元素之间移动的操作;

使用容易可用有效处理的方式来约束可用的操作。

14.每个标准库容器,比如vector,都定义了2个相关类型的迭代器类型:

container-type::const_iterator

container-type::iterator

container-type是容器的类型,并且包含元素的类型,例如vector<student_info>,这里的student_info是一个结构,struct student_info{}。当我们需要使用迭代器来改变保存在容器中的值时,我们使用iterator类型,如果只是读取访问,就使用const_iterator类型。

15.在一个数据结构内部插入和删除数据是很常见的需求,标准库提供了满足需求,这个类型名叫list,定义在头文件<list>中。

List支持在容易中的任意位置进行快速插入和删除。因为list的结构复杂一些,所以比起vector,访问速度上要慢一些。也就是说,如果值需要在末尾插入和删除,vector就比list好一些。然而,如果程序需要从容易的中间删除很多元素,对于大型输入来说,list就要快一些,而且随着输入的增长,list会比vector越来越快。

还有一个关键的操作,vector支持,但是list不支持,那就是索引。

16.谓词通常用来检验参数,并且返回真假值。

判断一个单词是否是一个回文,回文是指从前往后乒协与从后往前拼写相同的单词。

你可能感兴趣的:(读书笔记)