概述
一、vector概述
vector是动态连续空间,支持随机存取,迭代器的类型是Random Access Iterator。所以它支持下标访问。
二、vector的实现原理
1.vector动态空间的实现
当vector当前的空间被充满时,如果还想要插入元素,那么必须扩充空间。扩充空间的过程是:首先在内存里面找到当前vector容量两倍的空闲的连续空间。然后进行配置空间、数据移动、释放旧空间的大工程。重新配置空间的时间成本很高,所以系统按两倍的方式扩充。
2.vector的定义与常用的函数:
三、vector的迭代器
因为vector维护的是一个连续的线性空间,所以不论其元素类型为什么,普通指针都可以作为vector的迭代器而满足所有必要条件,因为vector迭代器所需要的操作行为是:operator*,operator->,operator++,operator–,operator+,operator-,operator+=,operator-=。普通指针天生就具备了。vector支持随机存取,而普通指针也有这样的能力,所以,vector迭代器的类型是Random Access Iterator。
四、vector的数据结构
五、vector的构造与内存管理
1.vector元素的插入
当vector需要插入一个元素时,首先要调用一个函数:construct()函数。这个函数调用了placement new,就是首先将要插入的元素分配一个空间,然后将这个元素插入到p开始的空间里面去。
placement new的用法
push_back和emplace_back的区别
注意:当vector的空间进行扩容之后,调用pop_back()这样的函数时,尽管容器里面的元素会减少,但是vector容器的容量不会改变
3.vector容器的其它操作
最后
以上就是合适百褶裙为你收集整理的vector容器的全部内容,希望文章能够帮你解决vector容器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复