ector的resize(),reserve()把我搞的晕头转向,老是记不住。现在把自己的一点理解记录在这里。

先看看http://www.cplusplus.com/reference/vector/vector/resize/

std::vector::resize

void resize (size_type n, value_type val = value_type());

Change size
Resizes the container so that it contains n elements.

If n is smaller than the current container size, the content is reduced to its first n elements, removing those beyond (and destroying them).

If n is greater than the current container size, the content is expanded by inserting at the end as many elements as needed to reach a size of n. If val is specified, the new elements are initialized as copies of val, otherwise, they are value-initialized.

If n is also greater than the current container capacity, an automatic reallocation of the allocated storage space takes place.

Notice that this function changes the actual content of the container by inserting or erasing elements from it.

resize()的作用是改变vector中元素的数目。

如果n比当前的vector元素数目要小,vector的容量要缩减到resize的第一个参数大小,既n。并移除那些超出n的元素同时销毁他们。

如果n比当前vector元素数目要大,在vector的末尾扩展需要的元素数目,如果第二个参数val指定了,扩展的新元素初始化为val的副本,否则按类型默认初始化。

注意:如果n大于当前的vector的容量(是容量,并非vector的size),将会引起自动内存分配。所以现有的pointer,references,iterators将会失效。

百度知道找到的一个关于resize和reserve的生动的例子:点这里

resize(),设置大小(size);
reserve(),设置容量(capacity);
size()是分配容器的内存大小,而capacity()只是设置容器容量大小,但并没有真正分配内存。
打个比方:正在建造的一辆公交车,车里面可以设置40个座椅(reserve(40);),这是它的容量,但并不是说它里面就有了40个座椅,只能说明这部车内部空间大小可以放得下40张座椅而已。而车里面安装了40个座椅(resize(40);),这个时候车里面才真正有了40个座椅,这些座椅就可以使用了。

另外这位博友的blog写的也很清楚,请参考!《c++ vector resize & reserve》

好了,就到这里!
————————————————
原文链接:https://blog.csdn.net/ubunfans/article/details/8447833

关于vector的resize()的理解相关推荐

  1. vector的resize函数和reserve函数

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

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

    vector中resize()和reserve()区别 本博客转载自:https://blog.csdn.net/jocodeoe/article/details/9230879 先看看<C++ ...

  3. vector之resize剖析-曾经的我以为自己真的学会了vector

    vector之resize剖析 零.前言 一.先看下面一段代码 二.测试结果 三.测试代码 零.前言 曾经的我以为自己真的学会了vector!人的认知有限,就以为自己什么都会了.当你深入研究一下时,才 ...

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

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

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

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

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

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

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

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

  8. vector之resize函数

    resize函数可以用于vector数组的初始化 class LockingTree {public:vector<int>p;vector<vector<int>> ...

  9. 向量空间模型(Vector Space Model)的理解

    https://www.cnblogs.com/hapjin/p/8687527.html

最新文章

  1. 驰骋工作流引擎JFlow与activiti的对比之4种包含多实例的模式
  2. 数据库连接类 DB.class.php
  3. Java实现的文件Copy例子
  4. 利用GDataXML解析XML文件
  5. Qt 之 消息机制和事件讲解
  6. 安卓清理垃圾清理代码_用方面清理代码
  7. AWS EC2启动Centos实例以及设置root密码登录
  8. java多线程入门1
  9. 美化下拉框select箭头部分(不彻底)
  10. 锤子科技或者说罗永浩在泛it行业到社会道德的缺失
  11. 在家如何访问公司电脑文件和服务器的共享文件夹
  12. 连上手机就能偷你信息?一定要注意你身边的共享充电宝。
  13. python画脑电信号
  14. 刘华:上云后,你的架构设计可以更飞
  15. 管理的艺术--达尔文进化论:适者生存 末位淘汰
  16. 基于LSTM的情绪分析
  17. NKOJ-3776 工资管理
  18. 当你启动服务器出现系统出错。 发生系统错误 1067。 进程意外终止。
  19. 滁州职业学院计算机,2020年滁州职业技术学院分类职业技能(系统根据考生所填第一志愿发布试卷进行测试)1、机电类专业技能(满分80分)...
  20. BENNING46393电源维修SMPS-MC2贝朗北宁电源维修

热门文章

  1. 详解python中的round()函数
  2. axios不发起请求_axios 发 post 请求的问题
  3. Java关键字(一)——instanceof
  4. 新手向:Vue 2.0 的建议学习顺序
  5. 深入字节码操作:使用ASM和Javassist创建审核日志
  6. Java程序员新手老手都离不开八大开发工具
  7. eclipse 配置黑色主题
  8. 程序员面试题精选100题(08)-求1+2+...+n[C/C++/C#]
  9. 不知道被谁删了微信好友?用 Python 来帮忙呀
  10. 局部特征(6)——局部特征描述汇总