1.vector是最常用到的容器,它其实是一种自动扩充的动态数组,底层实现通过两倍扩展,
所以再不能预知要存入元素多少时,难免要两倍扩展,这带来了拷贝所存对象的开销;
2.本文尝试利用memory chunk作为底层存储容器来避免动态扩展时copy 开销;
3.本实现屏蔽了stl vector 一些接口比如erase,主要是为了减轻实现复杂性考虑;
4.它支持两边插入和删除操作,其接口功能完全等同于stl 的deque;
5.和stl vector 做了push_back, pop_back, at 操作性能比较,结果如下:
1)push_back 操作,性能改善了4-5倍;
2)at操作,基本上相当;
3)pop_back性能变慢了3-4倍;
4) 尽管pop_back性能变慢了,但是我的实现内存大小是可伸缩的;
compile and run in visual studio 2005
test result as follows: