我是靠谱客的博主 合适百褶裙,最近开发中收集的这篇文章主要介绍vector容器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、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容器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部