文章标题STL中vector,Map,Set的实现原理
来源:互联网 发布:淘宝的心是怎么升级的 编辑:程序博客网 时间:2024/06/10 04:59
vector的数据安排以及操作方式,与array非常类似,两者唯一的区别是空间运用的灵活性,array是静态空间,一旦配置了就不能改变,如果你想要大一点的空间,就必须首先配置一块新空间,然后将原来的元素一一复制进来,再把原来的空间释放给系统。但是vector是动态空间,随着元素的增加,它的内部机制会自行扩充空间以容纳新元素,因此vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必因为害怕空间不足而一开始要求一个大块头的array了,我们可以安心使用vector,随便使用多大空间都可以
vector的实现技术,关键在于其对大小的控制以及重新配置时的数据移动效率,一旦vector的旧有空间满载,如果客户端每新增一个元素,vector的内部只是扩充一个元素的空间,实为不智,因为所谓扩充空间,都是配置新空间,复制原来内容,释放旧空间所需要的时间很多,那么应该怎样配置空间呢,接下来再说。
并且vector维护的是一个连续线性空间,所以支持vector随机存取
注意:
vector动态增加大小时,并不是在原空间之后持续新空间(因为根本无法保证原空间之后尚有可供配置的空间),而是以原大小的两倍另外配置一块较大的空间,然后将内容拷贝过来,然后才开始在原内容之后构造新元素,并释放原空间,因此,一旦引起空间重新配置,指向原vector的所有迭代器都失效了,这是程序员易犯的一个错误,务必小心
Map
Map是关联容器,以键值对的形式进行存储,方便进行查找,关键词起到索引的作用,值则表示与索引相关联的数据,以红黑树的结构实现,插入删除等操作都可以在O(log n)时间内完成
Map基本操作:
1.map
0 0
- 文章标题STL中vector,Map,Set的实现原理
- STL中vector/map/set实现原理
- STL中vector, Map, Set的实现原理
- STL中vector, Map, Set的实现原理
- STL中vector,Map,Set的实现原理
- STL中vector,Map,Set的实现原理
- STL中vector的实现原理 (衍生:Map, Set等实现原理)
- STL中vector的实现原理 (衍生:Map, Set等实现原理)
- C/C++知识要点2——STL中Vector、Map、Set容器的实现原理
- 简述stl 中set,vector,map的查找效率以及如何实现的?
- STL中List,Vector,Map,Set的理解
- STL中: string、vector、list、deque、set、map 的区别
- STL中: string、vector、list、deque、set、map 的区别
- STL中: string、vector、list、deque、set、map 的区别
- STL中List,Vector,Map,Set的理解
- STL中: string、vector、list、deque、set、map 的区别
- STL中List,Vector,Map,Set的理解
- STL中string、vector、list、deque、set、map 的区别
- bzoj 3198: [Sdoi2013]spring (hash+容斥原理)
- 阻止浏览器自身滑动事件 例如苹果手机的上拉下拉滑动
- Oracle Data Integrator学习资料
- javaQuery 获取当前元素(父元素,子元素,兄弟元素)
- 一个下载图标(Icon)非常棒的网站
- 文章标题STL中vector,Map,Set的实现原理
- Android studio 构建项目时一直卡在building gradle的完美解决方案
- 使用Repository Creation Utility创建档案库并连接
- 异常:Project configuration is not up-to-date with pom.xml解决方案
- array easy
- 这几个的用法傻傻分不清
- JAVA代码实现FTP文件下载
- Windows下安装Oracle Database 12c Release 1(12.1.0.2.0)
- 网络流24题18. 分配问题