第三章:标准库类型。
1.任何存储string的size操作结果的变量必须为string::size_type 类型。特别重要的是,不要把size的返回值给一个int 变量。比int要大2 倍。索引也是string::size_type类型滴。
2.在cctype.h文件中定义了这些判断单个字符的函数:是否字符,是否标点,是否大写等等:tolower(c) toupper(c) isalnum(c).......测试失败返回0,
3.虽然c++把c的头文件,去掉了.h,加上了c, cstdio --> stdio.h , 其实他们还有一点点不同滴,那就是:cstdio中的变量函数都是定义在std命名空间中滴,而.h则可以直接使用无需引入std空间。
4.vector不是一种数据类型,而只是一个类模版,vector<int>这才是一个具体的类型哦。
5.所有的标准容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作,所以我们应该多用迭代器。每个容器都定义了begin() end() 操作。
6.const_iterator 只读迭代器,const iterator迭代器只读。 迭代器支持 :it + n it1 - it2 这2个操作。
7.bitset类型。位操作类型。88页
第四章:数组和指针。
1.只有在强调速度时,才使用数组和指针,一般最好使用标准库东东。
2.数组与vector的区别:
.数组长度是固定的,不提供获取其容量的大小,不能动态添加元素,因此比vector更难调试和使用。
3.NULL是定义在cstdlib头文件中滴。属于预处理东东,不再std范围内哦。直接使用即可。
4.int i=43; long *l = & i; 这是错误滴,指针必须同类型,没有兼容这一说。
5.c++支持2个指针的减法操作,返回值应该用:prtdiff_t类型啦接收,定义在 cstddef头文件中。该类型只能保证在同一个数组中的减法操作。嘻嘻。
6.注意:const int ic =1 ; int * const cpi=⁣ 这是错误的。因为ic是不可以修改的,但是* const 是可以修改元素滴,所以出错罗。
7.strlen()是基于\0来判断大小的,所以没有\0结束的字符数组使用strlen(),是不可预料滴。
8.int *p=new int[a]; 在堆中的数组可以是动态的变量哦。 、
9.delete[] 表示释放一组空间,数组必须加上[]来释放。
10.str.c_str(); 是string的返回c风格数组的字符串函数。
第五章:表达式。
1.在程序中是用前置自增是一个好习惯。因为如果遇到复杂的迭代器的++,后缀的加加会花费更大的代码。
2.为什么叫c++,而不是++c,因为c++表示 ,返回c,然后才加加,说明与c语言完全兼容哦。 这里引用了c中的后置++来说明问题。
3.注意:a为数组时:size(a)可以探出其大小,a为指针时:size(a)只能返回4个字节。
4.int *p=new int; 没有初始化0 ,int *p=new int() ; 初始化为0了。
5.悬垂指针。悬垂else
第六章:语句。
1.预处里4个有用与调试的东东:__FILE__ ___LINE__ __TIME__ __DATE__ 文件名 , 行号,编译时间,编译日期。
2.try catch() throw .
第七章:函数。
1.c++引用代替了c的指针和变量形参。
2.实参是对形参的初始化。 哦。
3.数组作为形参时,是当作指针传递过去的,并不会检查其数组大小。
4.即使返回void的函数都是有返回值的,只是在语句最后会隐士一个return ; 空语句罢了。
5.不能返回局部对象的引用哦。 返回引用或者指针,必须返回所指向的那个区域是在全局区所存储的数据。
6.内联函数对于编译器来说,只是一个建议,编译器可以忽略那个建议。
7.const成员函数不能修改该对像,除非指定了:mutable ,并且与同名的非const函数可以重载哦。 编译器会自动识别滴。