STL vector实现机制
来源:互联网 发布:蒜泥白肉 知乎 编辑:程序博客网 时间:2024/06/06 07:45
vector的数据安排以及操作方式与array非常类似。两者的唯一差别在于空间的运用的灵活性。
array是静态空间,一旦配置好了就不能再改变了。如果程序需要一个更大空间的array,只能自己再申请一个更大的array,然后将以前array中的内容全部拷贝到新的array中。
vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新的元素。
vector的关键技术在于其对大小的控制以及重新配置时的数据移动效率。
原文链接:http://blog.csdn.net/linux_ever/article/details/50974924
vector采用的数据结构很简单:线性的连续空间。
它以两个迭代器start和finish分别指向配置得来的连续空间中目前已经被使用的空间。迭代器end_of_storage指向整个连续空间的尾部。
为了降低空间配置时候的速度,vector实际配置的大小可能比客户端需求量更大一些,以备将来可能的扩充。
如果vector在增加一个元素的时候,超过了自身最大的容量。vector则将自身的容量扩充至原来的两倍。
扩充空间需要经过的步骤:重新配置空间,元素移动,释放旧内存空间。(vector机制将旧空间中的备用空间也拷贝到新空间来了,感觉没必要)
一旦vector空间重新配置,则指向原来vector的所有迭代器都失效了,因为vector的地址改变了。
1、Vector是顺序容器,是一个动态数组,支持随机存取、插入、删除、查找等操作,在内存中是一块连续的空间。在原有空间不够情况下自动分配空间。vector随机存取效率高,但是在vector插入元素,需要移动的数目多,效率低下。
2、Map是关联容器,以键值对的形式进行存储,方便进行查找。关键词起到索引的作用,值则表示与索引相关联的数据。以红黑树的结构实现,插入删除等操作都在O(logn)时间内完成
3、Set是关联容器,set中每个元素只包含一个关键字。set支持高效的关键字查询操作——检查一个给定的关键字是否在set中。set也是以红黑树的结构实现,支持高效插入、删除等操作
在c++ STL中,当调用clear()成员函数时,并没有释放内存,clear只是将数组中的元素置为空了。释放内存需要delete。
array是静态空间,一旦配置好了就不能再改变了。如果程序需要一个更大空间的array,只能自己再申请一个更大的array,然后将以前array中的内容全部拷贝到新的array中。
vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新的元素。
vector的关键技术在于其对大小的控制以及重新配置时的数据移动效率。
原文链接:http://blog.csdn.net/linux_ever/article/details/50974924
vector采用的数据结构很简单:线性的连续空间。
它以两个迭代器start和finish分别指向配置得来的连续空间中目前已经被使用的空间。迭代器end_of_storage指向整个连续空间的尾部。
为了降低空间配置时候的速度,vector实际配置的大小可能比客户端需求量更大一些,以备将来可能的扩充。
如果vector在增加一个元素的时候,超过了自身最大的容量。vector则将自身的容量扩充至原来的两倍。
扩充空间需要经过的步骤:重新配置空间,元素移动,释放旧内存空间。(vector机制将旧空间中的备用空间也拷贝到新空间来了,感觉没必要)
一旦vector空间重新配置,则指向原来vector的所有迭代器都失效了,因为vector的地址改变了。
1、Vector是顺序容器,是一个动态数组,支持随机存取、插入、删除、查找等操作,在内存中是一块连续的空间。在原有空间不够情况下自动分配空间。vector随机存取效率高,但是在vector插入元素,需要移动的数目多,效率低下。
2、Map是关联容器,以键值对的形式进行存储,方便进行查找。关键词起到索引的作用,值则表示与索引相关联的数据。以红黑树的结构实现,插入删除等操作都在O(logn)时间内完成
3、Set是关联容器,set中每个元素只包含一个关键字。set支持高效的关键字查询操作——检查一个给定的关键字是否在set中。set也是以红黑树的结构实现,支持高效插入、删除等操作
在c++ STL中,当调用clear()成员函数时,并没有释放内存,clear只是将数组中的元素置为空了。释放内存需要delete。
0
上一篇:虚函数的实现机制
下一篇:关于贝叶斯公式,全概率公式,条件概率
相关热门文章
- test123
- 编写安全代码——小心有符号数...
- 使用openssl api进行加密解密...
- 一段自己打印自己的c程序...
- 彻底搞定C语言指针详解-完整版...
给主人留下些什么吧!~~
评论热议
阅读全文
0 0
- STL vector实现机制
- STL-Vector内存机制
- STL vector 容器实现
- STL vector实现(一)
- STL vector实现
- 自己实现 STL vector
- STL vector实现
- stl--vector 操作实现
- STL-vector的实现
- 【STL】 vector 模拟实现
- <STL>模拟实现Vector
- 【STL】模拟实现vector
- 模拟实现STL-Vector
- c++ stl vector实现
- STL模拟实现vector
- C++ STL vector实现(二)
- STL vector 动态数组实现
- STL vector的简单实现
- Tensorflow的反卷积(上采样)
- 155. Min Stack
- sizeof与strlen区别
- 网易2017春招笔试真题编程题集合--魔力手环
- 字符串编辑距离
- STL vector实现机制
- Machine Learning in action --朴素贝叶斯(已勘误)
- getopt_long
- poj 3321 Apple Tree 树状数组 dfs序
- 动态顺序表
- C++基础(五)虚函数、重载、覆盖、隐藏
- ip分片+端口
- Linux进程管理(1):进程描述和进程创建
- ptrace的些许总结
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
虚汗停颗粒
感冒出虚汗
虚汗停
宝宝出虚汗
虚汗多
流虚汗
小孩出虚汗
晚上出虚汗
虚汗停胶囊
头晕出虚汗
产后虚汗
产后出虚汗
虚汗怎么办
什么是虚汗
出虚汗头晕
手脚出虚汗
经常虚汗
经常出虚汗
出虚汗怎么调理
虚汗是什么原因
出虚汗怎么回事
女人出虚汗怎么调理
男人出虚汗怎么调理
虚汗停哪种人不能吃
孩子出虚汗怎么回事
产后虚汗一般多长时间
头晕出虚汗怎么回事
小孩出虚汗怎么调理
女性脚底出虚汗为什么
男人晚上出虚汗怎么调理
孕妇出虚汗怎么回事
出虚汗的症状
身体出虚汗是什么原因
淌虚汗是怎么回事
晚上出虚汗是什么原因
总是出虚汗是什么原因
经常出虚汗是怎么回事
老是出虚汗是什么原因
晚上睡觉冒虚汗是怎么回事
冒虚汗是什么原因
老是流虚汗是怎么回事