Vector的基本知识
在C++中,我们使用信息隐藏技术和封装技术把数据隐藏在类内部不许外部直接操作,同时提供访问器(如get_xxx成员函数)和修改器(如set_xxx成员函数)。STL容器的设计原理如出一辙,只是它们在实现时考虑的问题更多,更加复杂而已。容器不仅把元素对象隐藏起来了,而且把元素对象的内存申请和释放操作也全部隐藏起来了(通过存储分配器),这就使程序员彻底摆脱了直接操纵底层内存指针的麻烦,也避免了危险。经过严格测试的容器几乎不可能存在动态内存管理上的问题,因此可以放心使用。
下图是vector<T>的内存映像,来展示C++中STL是如何实现容器的
两个关键大小:
大小:size=_last - _first;
容量:capacity=_end - _first;
它们分别对应resize()、reserver()两个函数。