zoukankan      html  css  js  c++  java
  • 编程技巧

    在判断两个浮点数a 和b 是否相等时,不要用a==b,应该判断二者之差的绝对值fabs(a-b) 是否小于某个阀值,例如1e-9。


    判断一个整数是否是为奇数,用x % 2 != 0,不要用x % 2 == 1,因为x 可能是负数。


    用char 的值作为数组下标(例如,统计字符串中每个字符出现的次数),要考虑到char 可能是负数。有的人考虑到了,先强制转型为unsigned int 再用作下标,这仍然
    是错的。正确的做法是,先强制转型为unsigned char,再用作下标。这涉及C++ 整型提升的规则,就不详述了。


    以下是关于STL 使用技巧的,很多条款来自《Effective STL》这本书。


    vector 和string 优先于动态分配的数组
    首先,在性能上,由于vector 能够保证连续内存,因此一旦分配了后,它的性能跟原始数组相当;
    其次,如果用new,意味着你要确保后面进行了delete,一旦忘记了,就会出现BUG,且这样需要都写一行delete,代码不够短;
    再次,声明多维数组的话,只能一个一个new,例如:
    int** ary = new int*[row_num];
    for(int i = 0; i < row_num; ++i)
    ary[i] = new int[col_num];
    用vector 的话一行代码搞定,
    vector<vector<int> > ary(row_num, vector<int>(col_num, 0));

    使用reserve 来避免不必要的重新分配

    https://github.com/soulmachine/leetcode

  • 相关阅读:
    PHP 连接oracle
    PHP 简易导出excel 类解决Excel 打开乱码
    Linux下Apache网站目录读写权限的设置
    PHP behavior 机制简单实现
    RewriteCond和13个mod_rewrite应用举例Apache伪静态
    PHP event 事件机制
    PHP 函数引用传值
    django数据库连接快速配置
    解决Django项目数据库无法迁移问题
    生成uuid唯一标识符
  • 原文地址:https://www.cnblogs.com/forcheryl/p/3988386.html
Copyright © 2011-2022 走看看