vector中resize()和reserve()区别

本博客转载自:https://blog.csdn.net/jocodeoe/article/details/9230879
先看看《C++ Primer》中对resize()函数两种用法的介绍:

1.resize(n)

调整容器的长度大小,使其能容纳n个元素。
如果n小于容器的当前的size,则删除多出来的元素。
否则,添加采用值初始化的元素。

2.resize(n,t)

多一个参数t,将所有新添加的元素初始化为t。
而reserver()的用法只有一种

3.reserve(n)

预分配n个元素的存储空间。
了解这两个函数的区别,首先要搞清楚容器的capacity(容量)与size(长度)的区别。
size指容器当前拥有的元素个数;
而capacity则指容器在必须分配新存储空间之前可以存储的元素总数。
也可以说是预分配存储空间的大小。
resize()函数和容器的size息息相关。调用resize(n)后,容器的size即为n。
至于是否影响capacity,取决于调整后的容器的size是否大于capacity。
reserve()函数和容器的capacity息息相关。
调用reserve(n)后,若容器的capacity

vector<int> a;  a.reserve(100);
a.resize(50);
cout<<a.size()<<"  "<<a.capacity()<<endl;
a.resize(150);
cout<<a.size()<<"  "<<a.capacity()<<endl;
a.reserve(50);
cout<<a.size()<<"  "<<a.capacity()<<endl;
a.resize(50);
cout<<a.size()<<"  "<<a.capacity()<<endl;  

vector中resize()和reserve()区别相关推荐

  1. std::vector中resize()和reserve()区别

    在STL容器中vector用的还是比较多的,但是在使用时,会对resize()和reserve()的使用产生迷惑,现在就对这一情况做个对比: resize():改变的是size()与capacity( ...

  2. vector中resize和reserve接口的异同

    初次接触这两个接口也许会混淆,其实接口的命名就是对功能的绝佳描述,resize就是重新分配大小,reserve就是预留一定的空间.这两个接口即存在差别,也有共同点.下面就它们的细节进行分析.      ...

  3. vector的 resize()和reserve()的区别

    为了支持快速随机访问,vector将元素连续存储--每个元素紧挨着前一个元素存储. 关于vector对象是如何改变容器大小? resize(n) 调整容器元素个数为n,如果n小于容器的原size,则删 ...

  4. vector的resize()和reserve()函数

    关于resize函数和reserve函数的介绍这篇博客有:https://blog.csdn.net/ma2595162349/article/details/59745204 下面来看一下vecto ...

  5. vector的resize函数和reserve函数

    博客原文:C++基础篇 -- vector的resize函数和reserve函数_VampirEM_Chosen_One的博客-CSDN博客,写的特别好,谢谢原博主. 正文: 对于C++的vector ...

  6. C++ vector中的resize,reserve,size和capacity函数讲解

    前言 在介绍resize(),reserve(),size()和capacity()函数之前,先简单介绍一下c++中vector的概念. vector:顺序容器(可变大小数组).支持快速随机访问.在尾 ...

  7. vector中的reserve() 与 resize()

    resize()与reserve()都是vector容器中的方法: resize():改变了capacity()和size() reserve():增加了vector的capacity(),但是它的s ...

  8. vector中的push_back(涉及到动态分配),resize,reserve,swap方法解析

    目录 一.vector的push_back解析 二.size和capacity 三.resize和reserve 1.resize 2.reserve 四.关于reserve的应用 五.内存释放 sw ...

  9. c++中list、vector、map 、set区别

    List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]. Vector对于随机 ...

最新文章

  1. Maven最佳实践:划分模块
  2. 使用 Java Native Interface 的最佳实践
  3. MySQL SQL的概述
  4. BZOJ 2134: 单选错位
  5. 修改场景默认pawn的方法
  6. 【牛客 - 327牛客寒假算法基础集训营2 I】处女座的测验(二)(积性函数性质,数论,素数唯一性分解,STL)
  7. shardingsphere 分片策略_ShardingSphere系列(二) 分片策略
  8. 利用wxpython编写GUI
  9. AudioBufferSourceNode
  10. mysql 单向复制_Mysql 复制(Replication)实现
  11. BAT中for循环如何执行多条命令
  12. Java基础入门(八)之面向对象二
  13. 利用express启一个server服务
  14. RS485通讯的工作原理?
  15. 台式电脑连不上wifi怎么办
  16. 计算机专业个税,税后工资个税计算器
  17. 社会软件力量:六度分隔理论
  18. Fabric CA的部署与使用
  19. C语言实现简易五子棋
  20. 蝴蝶展翅鸿蒙云飞,关于蝴蝶的伤感句子 开辟鸿蒙,谁为情种?都只为风月情浓...

热门文章

  1. c++ 课程设计之车票管理系统
  2. 数据结构笔记(二十二)--已知先序中序求树
  3. 遍历二叉树(四种方式:前序、中序、后序、层序)
  4. Git 使用方法(一)-本地篇
  5. php發送郵件_PHP发送邮件类库PHPMailer的简单使用
  6. 苹果手机查看python代码的免费软件-Python实现抢购IPhone手机
  7. 微信防撤回python代码_python实现微信防撤回神器
  8. layui select第一次无法选中_Windows 10 无法访问共享的解决办法大全
  9. 基于react antd的新的tag和Badge的组合使用
  10. 计算机科学技术考研内容,计算机科学技术考研考什么科目