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 >>,是一个错误。