使用reserve函数避免vector和string的内存重新分配
vector和string内部维护的内存会“自动增长”,以便容纳不断放入其中的元素。调用max_size()可以返回其容量的最大限制。
“自动增长”的过程如下:
(1)分配一块大小为当前容量的某个倍数的新内存。
(2)将元素从旧内存拷贝到新内存。
(3)析构旧内存中的对象。
(4)释放旧内存。
“自动增长”的过程很耗时,并且会导致所有的指针、迭代器和引用失效。所以避免频繁的内存重新分配就显得很重要。
使用成员函数reserve()可以避免因“自动增长”而造成的内存重新分配。要尽早的使用reserve,把容量设为足够大。最好在容器刚被构造出来之后就使用reserve。
vector<int> v; v.reserve(1000); for (int i = 1; i <= 1000; ++i)v.push_back(i);
转载于:https://www.cnblogs.com/zhuyf87/archive/2012/12/06/2804512.html
使用reserve函数避免vector和string的内存重新分配相关推荐
- vector的resize()和reserve()函数
关于resize函数和reserve函数的介绍这篇博客有:https://blog.csdn.net/ma2595162349/article/details/59745204 下面来看一下vecto ...
- C++:vector中的resize()函数 VS reserve()函数
http://www.cplusplus.com/reference/vector/vector/vector/ 写代码的时候无意错用了这两个函数 导致测试的时候,程序运行崩溃 发现这两个函数还是有区 ...
- 关于C++vector容器内使用reserve函数预留能否被覆盖的问题
#include <iostream> #include <vector> #include <opencv2/opencv.hpp> #include <o ...
- vector的resize函数和reserve函数
博客原文:C++基础篇 -- vector的resize函数和reserve函数_VampirEM_Chosen_One的博客-CSDN博客,写的特别好,谢谢原博主. 正文: 对于C++的vector ...
- vector和string
我这里不是将他们的区别,主要讲使用他们时要注意的一些问题,主要体现在内存方面. C++中,我们很少使用C中的数组,使用数组就意味着承担: new一个数组以后,必须保证有delete来删除所分配的内存. ...
- STL标准模板库中的vector、string、deque、stack、list、set和map的详细介绍——C++学习记录01
文章目录: 1.vector 1.1 遍历方式 1.2 构造函数 1.3 容量大小问题 1.4 插入和删除 1.5 存取值 1.6 交换两个vectot的元素 1.7 预定义存储空间 2.string ...
- C++ STL的reserve函数
在阅读ceph源码过程中发现部分C++语法还是不够熟悉,特此做一下笔记. 关于STL中的reserve函数的使用 reserve()是为容器预留空间,即为当前容器设定一个空间分配的阈值,但是并不会为容 ...
- C++知识点4——vector与string简述
string 使用string类必须包含头文件#include<string> string对象的初始化 1.默认初始化 string s1; 2.拷贝初始化 string s4=s1; ...
- reverse函数实现vector变量的翻转
c++中reverse函数实现vector变量的翻转 Crystal_Coding 2019-10-16 20:40:49 235 收藏 最后发布:2019-10-16 20:40:49首发:2019 ...
最新文章
- 多目录cmake工程 CmakeLists.txt编写
- C#与U3D中字符串尾0
- 校运动会c语言程序编写,校运动会管理系统报告C语言(含完整代码)
- erlang精要(13)-基本语法(1)
- oracle并发执行max,跪求大量并发执行insert into select语句的方案
- 自定义字符串函数:strlen,strcat,strcpy,strcmp
- 苦逼了6年,我今天终于把老板开了!哼!
- Mysql设置binlog过期时间并自动删除
- 关于利用np.contour画出logistic模型决策边界(plot_decision_regions)的一点感想
- git 解决ahead behind分叉以及删除远端commit
- Anonymous Shared Memory android 匿名共享内存
- springboot结合mybatis连接数据库
- python常用标准库
- Java解析json数组三种情况
- 传统的固定思维和敏捷思维的对比
- 信息检索平台Terrier的使用
- 正面管教php_我就这样走进正面管教
- 《玩不够的数学:算术与几何的妙趣》:第一章 平面上的几何艺术
- ESB企业服务总线 --- ESB概述
- 文件上传绕过的一些姿势
热门文章
- 要学好 C 语言 / C++ ,Makefile 可少不了
- 四大对象是什么时候创建的?
- MyBatis 源码解读-typeHandlerElement()
- 注解配置 AOP 详解
- Maven的依赖管理
- 静态方法-应用场景和定义方式
- FastDFS配置手册trackerstorage
- redis命令-key操作
- mybatis-plus根据多个字段排序_Mybatis Plus学习笔记(逻辑删除/动态填充/常用插件)...
- java web 之间通信,【Java】Web发展中通信的方式有哪些呢?