相比之下,gets()要稍微规范一点,可惜的是gets()容易出现溢出错误,所以不建议使用。gets()仅仅是读入到"\n"字符为止,但是与scanf()不同的是,gets()不会把这个遇到的"\n"字符放入缓冲区,而且gets()所跳过的仅仅是这一个"\n"字符!也就是说,gets()函数永远是读入到当前行为止,并且自动转到下一行的开头。
empty():这个函数之所以被设计出来不是没有原因的。部分的类的size()函数并不是一个常数时间的函数,比如list。所以使用empty()是一个很好的习惯,而不是写成XXX.size()==0。
pop():很多人觉得pop()应该返回顶部元素,而不是void。事实上,如果要返回顶部元素,我们只能返回值的复制,因为顶部的元素被弹出了。这样一来,效率就降低了。
vector的增长量:这个增长量是2,也就是说每次容量不够的时候都是扩大2倍的容量。当然,不同的STL实现增长量也是不同的。但是2无疑是一个比较好的数值。至于为什么是2,是因为要照顾每个元素重新复制的代价。如果增长指数是r,那么最坏情况每个元素都要复制r/(r-1)次。其实也有编译器使用1.5作为增量的。