转自http://blog.csdn.net/jackywgw/article/details/6248342

首先必须弄清楚两个概念:

1.capacity

指容器在分配新的存储空间之前能存储的元素总数。

2. size

指当前容器所存储的元素个数

在弄清这两个概念以后,很容易懂resize和reserve的区别

1).reserve表示容器预留空间,但并不是真正的创建对象,需要通过insert()或push_back()等创建对象。

resize既分配了空间,也创建了对象。

2).reserve只修改capacity大小,不修改size大小,resize既修改capacity大小,也修改size大小。

#include <iostream>
#include <vector>
using namespace std;

int main(int argc, char *argv[])
{      
    vector <int> wgw;
    cout << "initilize size is: " << wgw.size() << endl;
    cout << "initilize capacity is :" << wgw.capacity() <<endl;
    wgw.reserve(100);
    cout << "wgw size is: " << wgw.size() << endl;
    cout << "wgw capacity is :" << wgw.capacity() <<endl;

vector <int>wgw1;
    wgw1.resize(200);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

return 0;
}

3).两者的形参个数不一样。

resize带两个参数,一个表示容器大小,一个表示初始值(默认为0)

reserve只带一个参数,表示容器预留的大小。

resize和reserve的区别的更多相关文章

  1. C++ Daily《2》----vector容器的resize 与 reserve的区别

    C++ STL 库中 vector 容器的 resize 和 reserve 区别是什么? 1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size. 2 ...

  2. vector中resize()和reserve()的区别

    先看看<C++ Primer>中对resize()函数两种用法的介绍: 1.resize(n) 调整容器的长度大小,使其能容纳n个元素. 如果n小于容器的当前的size,则删除多出来的元素 ...

  3. 函数 resize和reserve的区别

    reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素.加入新的元素时,要调用push_back()/insert()函数. resize是改变容 ...

  4. vector中resize和reserve的区别,代码验证

    #include <vector> using namespace std; int main() { vector<int> resizeVect; vector<in ...

  5. vector的resize与reserve的区别

  6. vector.resize 与 vector.reserve的区别 .xml

    pre{ line-height:1; color:#9f1d66; background-color:#a0ffc0; font-size:16px;}.sysFunc{color:#5d57ff; ...

  7. vector.resize 与 vector.reserve的区别(转载)

    转载:https://blog.csdn.net/shuilan0066/article/details/3588478 reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用 ...

  8. vector 的resize与reserve

    最近遇到一个坑,简单说来是resize与reserve的功能混淆了. 如下: 如果调用resize的化,编译会出错,如果给Text提供默认构造函数,则可以编译通过,最终输出的结果为10. 如果调用re ...

  9. vector性能调优之resize与reserve

    vector的resize与reserve reserve()函数为当前vector预留至少共容纳size个元素的空间.(译注:实际空间可能大于size) resize() 函数( void resi ...

随机推荐

  1. NoSQL四种——kv存储(memcache,Riak),列存储(Cassandra,Hbase),文档类(mongoDB,CouchDB),图数据库(neo4j)

    见:https://software.intel.com/sites/default/files/Configuration_and_Deployment_Guide_for_Cassandra_on ...

  2. centos下安装storm

    centOS安装ZeroMQ centOS安装ZeroMQ所需组件及工具: yum install gcc yum install gcc-c++ yum install make yum insta ...

  3. Unity3D教程:制作与载入AssetBundle

    通常我们在游戏程式执行过程,并不希望一次将全部的资源都载入,而比较希望实际上有使用到的才载入,以免占用多余的记忆体,所以我们可能会尽量规划好不同功能的场景,在需要时才载入场景并释放掉前个场景中不需要的 ...

  4. UVA - 11925 Generating Permutations (思维,构造)

    给你一个长度为n(n<=300)的排列,有两种操作,第一种是交换前两个数,第二种是把第一个数放到最后,让你用不超过2n^2次的操作把一个初始为1-n升序的排列变为该排列. 一开始被紫薯蛋疼的翻译 ...

  5. 【转】Cron表达式简介

    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...

  6. SQL Server 学习系列之六

    SQL Server 学习系列之六 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...

  7. 从内存中直接运行PE程序

    效果是这样的,假设一个PE数据在内存里面了,我们利用下面我讲的技术可以直接建立一个进程并运行这个PE,当然直接在本进程运行在可以,这两钟技术在前些时日我都有实现,今天我只说关于建立进程并运行的,当然, ...

  8. angular.run 妙用

    **1.浏览器判断**在angular做微信应用的时候,有时候我们也想把相同一份代码运行在非微信的浏览器上,这时候我们可以在angular的run上写点东西实现~例如asw.run函数里执行定义一个$ ...

  9. 快速沃尔什变换(FWT)学习笔记

    概述 FWT的大体思路就是把要求的 C(x)=A(x)×B(x)  即 \( c[i]=\sum\limits_{j?k=i} (a[j]*b[k]) \) 变换成这样的:\( c^{'}[i]=a^ ...

  10. 9.Selenium+HTMLTestRunner无法生成测试报告(Pycharm)

    1.若编辑器为Pycharm,代码无任何错误,且运行成功,但是无法生成测试报告,原因如下:(本质是编辑器原因) 若光标在如图位置,右键显示为“run 'unittest in XX'”,若是显示这种, ...