vector

Posted chenjx_ucs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vector相关的知识,希望对你有一定的参考价值。

一、vector的数据结构

vector的成员函数size()表示的是当前容器包含元素的数量,vector.size()=finish-start,vector的成员函数capacity()表示的是当前容器的容量,vector.capacity=end_of_storage-start。为了降低空间配置的速度成本,vector实际配置的大小可能比客户端需求量稍大,以备将来扩充的可能,这就是容量(capacity)的概念。一个简单的示意图如下:

 

二、push_back

将新元素插入vector尾部,该函数首先检查容器是否还有备用空间,如果有就直接在备用空间上构造元素,如果没有备用空间,则扩充空间(重新配置,移动元素,释放原空间)

这里可以看到,在备用空间不够时进行动态增加,因为无法保证原空间之后有可供配置的空间,所以并不是在原空间之后续接新空间,而是以原大小的两倍配置一块更大的空间,然后将原内容拷贝过来,并在新空间的原内容之后构造新元素,并释放原空间。还可以看到,如果原空间大小不为0,则新的空间capacity增加为原空间capacity的两倍。还需要注意,由于是动态配置的新空间,位于原空间的上的旧的迭代器会失效

 

三、pop_back

 

四、erase

erase清除某个位置上的元素,是将该位置元素清除,并将其后元素前移,效率是比较低的。

 

五、clear

 

六、insert

 

 

以上是关于vector的主要内容,如果未能解决你的问题,请参考以下文章

STL——vector

c++容器简单总结(续)

C++初阶---vector的使用及模拟实现 (待写。。)。

C++标准模板库STL最全总结收藏方便使用

vector

C++中的STL