1、当用两个迭代器初始化string类型时,如:string str(str1.begin(),str1.begin()+5),实际上,以上是一个前闭后开的区间,也就是说,str1,begin()+5所指向的字符并没有被复制。
2、void * memset ( void * ptr, int value, size_t num );用value初始化ptr所指向的前num区域,一种初始化方法。
3、判断两个浮点数类型的变量是否相等不要用a==b形式,而应该判断两个数绝对值之差是否小于一个阀值。
在代码中对浮点数据类型直接使用== 、<= 、>=、 !=等运算符进行比较都是不正确的。正确的方法应该是 将其差或和于小数进行比较 。
4、数组指针和指针数组傻傻分不清楚:int *p[],首先需要明白[]的优先级高于*,p先和[]结合,说明其是一个数组,再和*结合,说明数组里的变量都是指针;int (*p)[],p先和*结合,所以p是一个指针,再和[]结合,说明指针指向的都是数组。
5、遇到字符串,优先使用string;遇到会变的数组,优先使用vector;能用stl就不要自己写。
6、size_t类型使用特别注意,其不可能为负,所以不要犯size_t t;while(t>=0){--t};这样的错误,因为t永远也不可能为负。
7、判断一个整数是否为奇数,用x%2!=0,不要用x%2==1,因为x也可能为负数。
8、用完new后一定要用delete,它们和(),{},[]一样,都是成对出现的。
9、if(t)、while(t)等等,后面省略的都是“!=0/NULL” ;true为1,false为0;a==b这种形式,相等(为真)返回的是1,不相等(为假)返回的是0;
10、STL标准模板库是C++标准库的一部分,C++标准库还有HP,SGI等实现的STL版本,STL标准模板库中的绝大部分都是在SGI中实现的;不过,在使用时不用管这么多,STL标准库的头文件是没有扩展名的,直接包含相关头文件即可;STL中有很多实用的算法,熟悉其使用可以节省很多时间,而且STL实现的版本性能肯定不会比自己写的差到哪去。
11、