博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用reserve函数避免vector和string的内存重新分配
阅读量:6835 次
发布时间:2019-06-26

本文共 372 字,大约阅读时间需要 1 分钟。

vector和string内部维护的内存会“自动增长”,以便容纳不断放入其中的元素。调用max_size()可以返回其容量的最大限制。

“自动增长”的过程如下:

(1)分配一块大小为当前容量的某个倍数的新内存。

(2)将元素从旧内存拷贝到新内存。

(3)析构旧内存中的对象。

(4)释放旧内存。

“自动增长”的过程很耗时,并且会导致所有的指针、迭代器和引用失效。所以避免频繁的内存重新分配就显得很重要。

使用成员函数reserve()可以避免因“自动增长”而造成的内存重新分配。要尽早的使用reserve,把容量设为足够大。最好在容器刚被构造出来之后就使用reserve。

vector
v;v.reserve(1000);for (int i = 1; i <= 1000; ++i) v.push_back(i);

转载地址:http://pktkl.baihongyu.com/

你可能感兴趣的文章
乐高情报站7月份抽奖数据汇总。
查看>>
Algorithm Part I:Priority Queues
查看>>
但从谈论性能点SQL Server选择聚集索引键
查看>>
uboot初体验-----趣谈nand设备发起的浅显理解
查看>>
基于selenium的pyse自动化测试框架
查看>>
编译的依赖不能vs的release工程
查看>>
Linux常用的系统监控shell脚本
查看>>
codeforces Gym 100500C D.Hall of Fame 排序
查看>>
约瑟夫环问题
查看>>
yum
查看>>
c++指针存储应用程序和释放内存的问题
查看>>
LPC43xx SGPIO Slice 示意图
查看>>
NUMA的取舍与优化设置
查看>>
uboot源码整体框架
查看>>
编译命令行终端 swift
查看>>
Swift - 使用UISearchController实现带搜索栏的表格
查看>>
web接口测试之GET与POST请求
查看>>
关于LR中的EXTRARES
查看>>
转:如何转换Android打包用jks格式keystore证书为Air用pkcs12格式p12证书
查看>>
光伏发电系列:关于光伏发电站的建设成本和资金回收周期
查看>>