stl容器之vector
需要了解:实现细节,扩容机制,如何插入元素、消除元素,一些操作的时间复杂度等。
vector(mingw-8.1.0)的介绍
vector是序列式容器,动态扩容,比之array更加灵活。对于序列式容器而言,扩容有以下操作:配置新空间、移动数据、释放旧空间,所以扩容机制需要更合理的策略。
vector的迭代器
迭代器类型:Random Access,因为其维护的是连续线性空间,与raw pointer一样支持各种操作。注意,vector中的push_back、insert、erase等操作都可能使先前获得的迭代器失效。
vector的数据结构
数据结构:线性连续空间。其内部具有三个迭代器。在mingw中,其内部有名为_Vector_impl的底层实现:
其中start指向使用空间的头,finish指向使用空间的尾,end_of_storage指向可用空间的尾。begin操作如下,iterator目的是将非类的迭代器(例如指针)转换为类的迭代器,里面定义了很多类型,且重载了各种操作符来支持不同迭代器类型。