在判断两个浮点数a和b是否相等时,不要用a==b;应该判断两者之差的绝对值fabs(a-b)是否小于某个阈值,例如:1e - 9 ;
判断一个整数是否为奇数时使用x%2!=0;不要用x%2==1;,应为x可能是负数。
用char的值作为下标(例如:统计数字中每个字符出现的次数),要考虑到char可能是负数。有人考虑到了,先强转为了unsigned int 再用作下标,这仍是错误的。正确的做法是,先强转为 unsigned char ,再作为下标
vector 和string 优先于动态分配的数组
首先:在性能上,由于vector能够保证连续的内存,因此一旦分配了后,它的性能跟原始数组是相当:
其次:如果用new,意味着你要确保要在后面用delete ,一旦忘记了就会产生bug,且这样都要写一行delete,代码不够短。
再次,声明多维数组的话,只能一个一个的new,例如:
int **array=new int *[row_now];
for(int i=0;i<row;++i)
{
ary[i]=new int [col_num];
}
如果用vector的话一行代码就能搞定:
vector<vector<int> > ary(row_num,vector<int> (col_num,0))