社区
C++ Builder
帖子详情
vector重新分配内存时容量增长的规律
unistd68
2017-03-20 01:40:32
各位前辈,关于vector重新分配内存时容量增长大小的规律的问题,我一直纠结了很久,从看源码到自己代码实现,发现两者的规律不相同,烦请解释一下。
os:win10 ,64位;
编译工具:vs2015 pro;
vector重新分配容量的源码:
我自己代码实现:
运行结果是:
从源码来看,每次vector重新分配内存时会分配原容量的2倍,但是从我自己实现的代码运行结果来看,每次分配是原容量的150%,。这种情况该如何理解?
...全文
534
4
打赏
收藏
vector重新分配内存时容量增长的规律
各位前辈,关于vector重新分配内存时容量增长大小的规律的问题,我一直纠结了很久,从看源码到自己代码实现,发现两者的规律不相同,烦请解释一下。 os:win10 ,64位; 编译工具:vs2015 pro; vector重新分配容量的源码: 我自己代码实现: 运行结果是: 从源码来看,每次vector重新分配内存时会分配原容量的2倍,但是从我自己实现的代码运行结果来看,每次分配是原容量的150%,。这种情况该如何理解?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
unistd68
2017-03-20
打赏
举报
回复
引用 3 楼 u010165006 的回复:
STL有几个不同的实现,不同的编译环境带的可能不同。
感谢,确实是和os或者编译器有关,我在ubuntu下使用g++来测试,增长的容量确实是之前的2倍
ooolinux
2017-03-20
打赏
举报
回复
STL有几个不同的实现,不同的编译环境带的可能不同。
unistd68
2017-03-20
打赏
举报
回复
源码是sgi官网下的,v3.3的,库是vs2015自带的
ooolinux
2017-03-20
打赏
举报
回复
源码和库是对应的吗?
算法C++版
收集工作中经常遇到、经典的问题,抽象并给出交较优答案,方便同事优化、学习。用C++实现,本课程将持续... 七,元素是
vector
的二分查找,也就是
vector
<
vector
<int>>中二分查找。 八,具体的例子。
C++STL教程(23) 研究std::
vector
的内存
增长
规律
一、前言 首先说明,
vector
可以理解为动态数组,既然是数组,那么它在内存中就应该是一块连续的内存,但
vector
是如何支持动态
增长
的呢?关于这个问题,网上有很对说法,但其中有些说法是错误的,最近看到有一篇博友的解释就非常正确
vector
空间动态
增长
,这里就针对的他的解释进行进一步的阐述,并进行实际验证。 二、
vector
内存
增长
方式 C++primer中多次明确指出对
vector
使用的建议是:先创建一个空的
vector
对象,然后再运行
时
再利用
vector
的成员函数push_back向其中添加元素。先以此
vector
内存
一、
vector
的内存
增长
vector
内存的特点:内存空间只会
增长
,不会减少
vector
支持随机访问,
vector
容器的元素以连续的方式存放,每个元素都紧挨着前一个元素存储。当
vector
插入数据
时
,可能空间不够,这
时
要
重新
分配新的内存,将数据从旧空间拷贝到新空间,然后释放旧空间,这样性能难以接受,因此每次对
vector
进行内存分配
时
,其实际分配的
容量
要比当前所需的空间多一些。就是...
C++中
vector
容器大小
增长
规律
分析及编程示例
从输出中可以看出,初始
容量
为0。在示例中,我们可以观察到容器的
容量
在达到某个阈值后会进行扩容,以容纳更多的元素。当我们向
vector
容器中添加元素
时
,如果容器的当前大小不足以容纳新元素,它会自动进行扩容,以便能够容纳更多的元素。需要注意的是,
vector
容器的大小
增长
是一个相对耗
时
的操作,因为它涉及到内存的
重新
分配和元素的拷贝。因此,在编写代码
时
,应尽量避免频繁地进行
vector
容器的大小
增长
操作,以提高程序的性能。
vector
容器的大小
增长
策略由具体的实现决定,不同的编译器或标准库实现可能有所不同。
vector
的capacity
增长
规律
探讨
目录1. 前言 2. windows 2.1 代码实现 2.2 结果 2.3 分析 3. linux 3.1 代码实现 3.2 结果 3.3 分析 4. 总结1. 前言STL容器的内存分配是一个重点内容,不同版本的STL的内存分配策略不尽相同,下面我从2个测试例子来说明常用的2个版本的STL中
vector
内存分配的
规律
。2. windows环境 说明:编译器是visual s
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章