C++:vector中的resize()函数 VS reserve()函数

2023-11-01

写代码的时候无意错用了这两个函数 导致测试的时候,程序运行崩溃 发现这两个函数还是有区别的

void reserve (size_type n);

reserver函数用来给vector预分配存储区大小,即capacity的值 ,但是没有给这段内存进行初始化。

reserve 的参数n是推荐预分配内存的大小,实际分配的可能等于或大于这个值,即n大于capacity的值,就会reallocate内存 capacity的值会大于或者等于n 。这样,当ector调用push_back函数使得size 超过原来的默认分配的capacity值时 避免了内存重分配开销。

需要注意的是:reserve 函数分配出来的内存空间,只是表示vector可以利用这部分内存,但vector不能有效地访问这些内存空间,访问的时候就会出现越界现象,导致程序崩溃。

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

resize函数重新分配大小,改变容器的大小,并且创建对象.

当n小于当前size()值时候,vector首先会减少size()值 保存前n个元素,然后将超出n的元素删除(remove and destroy)

当n大于当前size()值时候,vector会插入相应数量的元素 使得size()值达到n,并对这些元素进行初始化,如果调用上面的第二个resize函数,指定val,vector会用val来初始化这些新插入的元素

当n大于capacity()值的时候,会自动分配重新分配内存存储空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++:vector中的resize()函数 VS reserve()函数 的相关文章

随机推荐

  • unity生成透明背景的截图,截图背景图透明,UGUI scrollview滑动的时候不能遮罩3d模型

    转载 Unity3D Unity3D 摄像机带透明截图 静茹 鱼 博客园 using System using UnityEngine using System IO public class CropPicture MonoBehavio
  • Sonarqube安装插件报错An error has occurred. Please contact your administrator

    报错信息 Sonarqube安装插件时提示 An error has occurred Please contact your administrator 解决方法 1 查询报错日志 使用docker logs查询Sonarqube日志 插
  • jpress代码审计分享

    声明 出品 先知社区 ID 1871162774168111 以下内容 来自先知社区的1871162774168111作者原创 由于传播 利用此文所提供的信息而造成的任何直接或间接的后果和损失 均由使用者本人负责 长白山攻防实验室以及文章作
  • 【转载】一些比较好的电子资源网站

    SkyEye Project SkyEye是一个开源软件 opensource software 项目 中文名字是 天目 SkyEye的目标是在通用的Linux和Windows平台实现一个模拟集成开发环境 模拟基于ARM的嵌入式计算机系统
  • 《Linux C++》线程池

    为什么使用线程池 线程池的出现正是着眼于减少线程本身带来的开销 避免 即时创建 即时销毁 线程池应用场合 像大多数网络服务器 包括Web服务器 Email服务器以及数据库服务器处理数目巨大的连接请求 但处理时间却相对较短 并且实时性要求比较
  • 硬见小百科」这些PCB布局布线规则,你了解多少?

    元器件布局的10条规则 遵照 先大后小 先难后易 的布置原则 即重要的单元电路 核心元器件应当优先布局 布局中应参考原理框图 根据单板的主信号流向规律安排主要元器件 元器件的排列要便于调试和维修 亦即小元件周围不能放置大元件 需调试的元 器
  • Java中的sort()

    sort的第一种格式 sort的第二种格式 sort函数中cmp函数的使用方法 自定义排序基本方法 sort的第一种格式 sort函数的基本格式 默认排序为升序排序 Arrays sort 数组名 起始下标 终止下标 例 import ja
  • 【机器学习】机器学习建模调参方法总结

    文章目录 一 前言 1 1 数据来源 1 2 理论简介 二 知识总结 2 1 回归分析 2 2 长尾分布 2 3 欠拟合与过拟合 2 4 正则化 2 5 调参方法 2 5 1 贪心调参 坐标下降 2 5 2 网格调参GridSearchCV
  • JavaScript高手进阶:详解Eval加密

    在JavaScript编程中 涉及到代码加密 在混淆加密时代之前 用的最多的应该是种Eval加密 加密后的特征是以 eval function p a c k e r 为代码开始 相信很多人都见过这种代码 Eval加密效果例程 这是一种非常
  • MFC 解决中文乱码问题

    新的编译工具默认的是unicode编码方式 许多在多字节下面显示中文的方法已经不再适用了按照道理说设置为unicode编码后应该会很好的支持中文 但是实际情况很悲惨 显示的都是乱码 看到网上的很多方法都是把CSTRING转来转去 很头疼 感
  • powershell 删除指定文件夹及文件

    删除指定的文件夹 Get ChildItem C ccccc Recurse Where Object PsIsContainer Where Object FullName like test Remove Item Force Recu
  • SpringBoot配置多数据源

    项目框架 SpringBoot MyBatis Mysql 项目连接两个数据库源 1 application yml配置 使用DruidDataSource 主数据库为primary 副数据库为secondary 名称可以自己定义 只要和后
  • 如何使用Git进行版本控制

    在软件开发过程中 版本控制是一个非常重要的部分 它可以让开发人员更轻松地管理代码 集成代码 以及跟踪代码的变更历史 Git是一个广泛使用的版本控制工具 它的易用性和可扩展性使得它成为了开源社区的首选 在本文中 我们将介绍如何使用Git进行版
  • 转载 -- 按位异或的性质及其妙用

    https www jianshu com p 86a7cf855e51 文章摘要 1 按位异或 可以简单理解成 不进位加法 即 1 1 0 0 0 0 1 0 1 2 任何数和自己异或结果为零 3 按位异或的自反性 两次运算操作 可以将最
  • vs code下载慢的解决方法

    1 在官网Visual Studio Code Code Editing Redefined下载 大概率会出现如下情况 2 复制以上下载的链接地址 把以上截图红框标注的部分换成vscode cdn azure cn 这样会变成采用国内的镜像
  • canvas中的save和restore方法的作用

    save方法可以理解为暂存当前画笔的状态 接下来对画笔的操作都不会被保存下来 直到restore方法被调用 讲得通俗一点 就是说 调用save方法 就是把当前的笔放笔架上 换一支笔 调用restore方法时 再把刚才放到笔架上的笔再拿下来用
  • 使用Python对图像进行不同级别量化QP,使用RLE计算压缩比,并计算对应的PSNR

    写这篇博客源于 博友的提问 1 效果图 原图 VS QP 2 VS QP 4 VS QP 8效果图如下 QP量化是指把原始图像按像素级别划分取值 如QP 2 则 lt 128 取0 gt 128取128 QP 4 则 lt 64取0 lt
  • 无线dhcp服务器静态,wifi的ip设置dhcp和静态的区别

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 以网络为例 wifi的ip设置dhcp和静态的区别如下 1 静态IP地址 又称固定IP地址 是长期分配给一台计算机或网络设备使用的 IP 地址 一般来说 一般是特殊的服务器
  • MySQL经典入门

    MySQL数据库相关知识 数据库的基本概念 数据库的英文单词 DataBase 简称 DB 什么是数据库 用于存储和管理数据的仓库 数据库的特点 持久化存储数据的 其实数据库就是一个文件管理系统 方便存储和管理数据 使用了统一的方式操作数据
  • C++:vector中的resize()函数 VS reserve()函数

    写代码的时候无意错用了这两个函数 导致测试的时候 程序运行崩溃 发现这两个函数还是有区别的 void reserve size type n reserver函数用来给vector预分配存储区大小 即capacity的值 但是没有给这段内存