c++跨平台的那些事

1、同样语义的接口太多,很多人搞不清区别

    swap和operator = 的性能差别

2、容器的一些边界情况没有说明清楚

     有人认为string是内存连续的容器。

     gcc自带的hash_map在什么情况下性能急剧抖动?

static const unsigned long __stl_prime_list[_S_num_primes] =

 {

     53ul,         97ul,         193ul,       389ul,       769ul,

     1543ul,       3079ul,       6151ul,      12289ul,     24593ul,

    49157ul,      98317ul,      196613ul,    393241ul,    786433ul,

    1572869ul,    3145739ul,    6291469ul,   12582917ul,  25165843ul,

    50331653ul,   100663319ul,  201326611ul, 402653189ul, 805306457ul,

    1610612741ul, 3221225473ul, 4294967291ul

};

3、算法

    很多算法需要检查迭代器的位置

4、数值计算方面

    很多使用了不规范的写法 比如不适用numeric的一些定义,比如比较浮点数的时候不用episilon,导致在一些精度下的浮点数比较正确,

而别人用来比较浮点坐标下点的位置时候出错。

5、摸板太复杂,编译器或是调试器支持问题

    比如boost::bind的一些用法会导致vs2008的优化编译器崩溃。

    比如boost::bind的一些用法会导致低版本的gdb展开call stack时候段错误。

6、很多时候发现第三方的容器有时候很不错。

    比如QList的查找操作是O(1)

    比如需要hash链表 hash树和 hash环的时候

7、在跨平台的时候注意使用标准的写法

              统计了下公司里面的代码最容易出现的且最低级的是vector<vector<> >之类中>> 和 > >写法的问题,前者gcc认为是operator >>,是一个错误。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值