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的主要内容,如果未能解决你的问题,请参考以下文章