STL笔记

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

本作品遵循“署名-非商业性使用-相同方式共享 3.0 Unported”协议,转载请注明来自richard-desktop
Creative Commons License

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter