1.vector怎么增容?
答:一般是2倍2倍的增容,但是不一定是非得增2倍,vs下的capacity是按1.5倍增长的,g++下面的capacity是按2倍增长的。
顺序表增容不一定都是2倍,具体增长多少是根据具体的需求定义的。vs是PJ版本STL,g++是SGI版本STL。
2.reserve和resize的区别?
答:reserve只负责开辟空间,如果确定知道需要用多少空间,reserve可以缓解vector增容的代价缺陷问题。
而resize在开空间的同时还会进行初始化,会影响size。
3.vector中,什么时候会引发迭代器失效?
答:insert(可能会增容)或erase之后,会引发迭代器失效 解决办法:重置迭代器,让迭代器指向新的有效的空间
解决erase迭代器失效的办法:迭代器在设置的时候,有一个返回值,它会返回最近删除位置下一个位置的有效迭代器