理解reserve与resize
1、首先明白capacity与size的概念,capacity表示当前可以容纳多少个元素,size表示当前有多少个元素。为了避免频繁地分配内存,vector预留了一些内存。也就是说:size<=capacity。
2、reserve(n)的目的是:使容器可以容纳n个元素,也就是修改capacity。
a、如果n>capacity,重新分配内存,把原来的数据copy过来,修改capacity = n。
b、如果n< = capacity,什么也不做,直接返回。
3、resize(n)的目的是:修改当前元素的个数。
a、如果n<size,对尾部多余的元素进行析构。
b、如果n=size,什么也不做。
c、如果size<n<=capacity,在尾部补齐元素。没有指定构造方法,使用default构造方法。
d、如果n>capacity,重新分配内存,把原来的数据copy过来,在尾部补齐元素。没有指定构造方法,使用default构造方法。
理解reserve与resize的更多相关文章
- vector reserve与resize区别
vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下:reserve是容器 ...
- 实战c++中的vector系列--copy set to vector(别混淆了reserve和resize)
stl算法中有个copy函数.我们能够轻松的写出这种代码: #include <iostream> #include <algorithm> #include <vect ...
- (转) vector的reserve和resize
文章转自 http://www.cnblogs.com/qlee/archive/2011/05/16/2048026.html vector 的reserve增加了vector的capacity, ...
- vector的reserve和resize(转)
转自:http://www.cnblogs.com/qlee/archive/2011/05/16/2048026.html vector 的reserve增加了vector的capacity,但是它 ...
- reserve和resize区别
reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素.加入新的元素时,要调用push_back()/insert()函数. resize是改变容 ...
- C++ vector的reserve和resize详解
vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下: rese ...
- vector 的resize 和 reserve
首先声明,都是转载的,理解知识为主要目的. http://www.cnblogs.com/zahxz/archive/2013/02/20/2918711.html C++内置的数组支持容器的机制,但 ...
- STL容器的reserve()函数和resize()函数解析
以vector为例,我们都知道可以用reserve()和resize()函数来为容器预留空间或者调整它的大小. 不过从它俩的名字上可以看出区别: reserve():serve是"保留&qu ...
- leetcode bugfree note
463. Island Perimeterhttps://leetcode.com/problems/island-perimeter/就是逐一遍历所有的cell,用分离的cell总的的边数减去重叠的 ...
随机推荐
- shell脚本基础——常用的sed命令举例
一般在实际使用编辑器的过程中 , 常需要执行替换文件中的字符串.移动.删除.与搜寻数据行等等动作.当然 , 一般交互式编辑器(如 vi.emacs)都能做得到上述功能 , 但文件一旦有大量上述编辑需求 ...
- OFBIZ+ECLIPSE
1. 首先要安装好OFBIZ,参考<OFBIZ安装>. 2. 安装ECLIPSE. 3. 安装FreeMarker插件,这是OFBIZ的模版引擎.在"Eclipse Market ...
- nodejs cmd
引入系统模块 var exec = require('child_process').exec; cmd.js var exec = require('child_process').exec; va ...
- leetcode@ [273] Integer to English Words (String & Math)
https://leetcode.com/problems/integer-to-english-words/ Convert a non-negative integer to its englis ...
- js混淆工具
1\ http://www.jasob.com 2\ http://developer.yahoo.com/yui/compressor
- SQL SERVER安装提示“安装了 Microsoft Visual Studio 2008 的早期版本
工作共遇到的问题记录: 安装Sql Server 2008 R2时提示错误:“此计算机上安装了 Microsoft Visual Studio 2008 的早期版本.请在安装 SQL Server 2 ...
- SA
hdu 4029 题意:给你一个字符矩阵,统计不同的子矩阵的个数: 分析:枚举子矩阵的宽度w,对于每一个w,将每一行长度可以是w的字符串HASH成一个值,然后用map标记,因为宽确定了,hash完之后 ...
- UVALive 7077 - Little Zu Chongzhi's Triangles(暴力)
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- Liunx更新源
不同的网络状况连接以下源的速度不同, 建议在添加前手动验证以下源的连接速度(ping下就行),选择最快的源可以节省大批下载时间. 首先备份源列表: sudo cp /etc/apt/sources.l ...
- 我所改造的JSocket适用于任何DELPHI版本
JSOCKET是异步选择模式的通信控件,简单而强大,传奇的早期版本就是使用它作通信. { ******************************************************* ...