C字符串和C++字符串 见http://www.cnblogs.com/MuyouSome/archive/2013/06/08/3127828.html
查资料说vector容器中不适合放push_front和pop_front。那为什么太慢呢?
回答转载自http://zhidao.baidu.com/link?url=avlgRllAXvKrhfU2JfFjI3JPa8v3AKbrIbBTcjWSkcpw_ArRK5ef97dJF6O8jnr-v1SfRi4w-XwMZ_N1nYMMZq
首先,你得要先明白,vector是开辟一块空间来作为数组来存放元素(随机迭代器),如果有了pop_front,pop_back这个功能则很容易造成内存碎片,pop_front会造成头部内存产生碎片,pop_back朝臣尾部内存产生碎片,所以不能像deque(双向迭代器)那样有pop_front, pop_back这样的完全相同的实现.其次才是性能上的问题,vector实现pop_front的功能可以这样: vector<int> vi; vi.push_back(1); vi.push_back(2); vi.push_back(3); vi.erase(vi.begin());//等同于push_front 但是,这样实现的实质是,重新开辟内存放置元素后释放原先的内存,这样做的原因是放置内存碎片,在程序中,如果产生内存碎片则意味着这是内存泄露,是十分危险的一件事情,所以不能在stl中出现