Mar 27
- sort():在使用sort(first, last, greater<T>())的时候,不要使用greater_eq。也就是对于任意的比较函数f,f(x, x)的结果都应该是false。
- empty():这个函数之所以被设计出来不是没有原因的。部分的类的size()函数并不是一个常数时间的函数,比如list。所以使用empty()是一个很好的习惯,而不是写成XXX.size()==0。
- pop():很多人觉得pop()应该返回顶部元素,而不是void。事实上,如果要返回顶部元素,我们只能返回值的复制,因为顶部的元素被弹出了。这样一来,效率就降低了。
- vector的增长量:这个增长量是2,也就是说每次容量不够的时候都是扩大2倍的容量。当然,不同的STL实现增长量也是不同的。但是2无疑是一个比较好的数值。至于为什么是2,是因为要照顾每个元素重新复制的代价。如果增长指数是r,那么最坏情况每个元素都要复制r/(r-1)次。其实也有编译器使用1.5作为增量的。