vector中clear和析构函数的区别

vector中clear和析构函数的功能确实类似,不同的是,clear 不会释放掉已配置的空间,dtor 会析构并释放。调用clear再析构不会有问题,调用两次析构也不会有问题。clear 不是简单的设置 size 为0,dtor 也不是简单的设置 capacity 为0。

vector中clear和析构函数的区别-Worktile社区

vector中clear和析构函数的功能确实类似,不同的是,clear 不会释放掉已配置的空间,dtor 会析构并释放。调用clear再析构不会有问题,调用两次析构也不会有问题。

clear 不是简单的设置 size 为0,dtor 也不是简单的设置 capacity 为0。

它们涉及到元素的析构与对象分配,实际影响的是vector内部存储了元素起始、结束以及可用空间的尾部的指针。

clear() 不释放数组,要调用 data[0] 至 data[size – 1] 的析构函数。

析构时调用 clear() 然后释放数组。你的 delete _pData 应该有问题,因为它会析构第一个元素。

另外,析构时并不需要把成员变量设为 null 或 0。因为调用两次析构函数是不合法的,不需要考虑这个情况。

延伸阅读:

什么是析构函数?

析构函数(destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)。

与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统会自动执行析构函数。以C++语言为例:析构函数名也应与类名相同,只是在函数名前面加一个位取反符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数(即使自定义了析构函数,编译器也总是会为我们合成一个析构函数,并且如果自定义了析构函数,编译器在执行时会先调用自定义的析构函数再调用合成的析构函数),它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。

文章标题:vector中clear和析构函数的区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38597

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年2月17日 上午2:31
下一篇 2023年2月17日 上午2:33

相关推荐

  • Apache Hadoop, IBM Symphony Platform, Aliyun ODPS, Tencent TDW 的区别与联系

    区别:Apache Hadoop属于开源的分布式计算基础架构。IBM Platform Symphony的一个核心优势是,它能屏蔽底层基础设施的复杂性。ODPS底层的基础架构和Hadoop类似,基本理论基础是Gooogle开放的那几篇论文。Tencent TDW是腾讯基于Hadoop生态圈的开源产品…

    2023年2月21日
    6700
  • sql怎样实现vlookup的功能

    具体的步骤如下:一、表格关联;二、选择需要的列;三、加上查询条件。需要将两个表格进行关联。关联的条件是学生的姓名字段。因为学生的姓名在两个表格中都存在,所以我们可以使用INNER JOIN操作来实现关联。 一、表格关联 需要将两个表格进行关联。关联的条件是学生的姓名字段。因为学生的姓名在两个表格中都…

    2023年5月31日
    1900
  • 敏捷开发干什么用的

    敏捷开发的作用是以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被…

    2023年4月16日
    1400
  • JAVA开源工作流引擎都有哪些

    JAVA开源工作流引擎有: 1、Shark;2、Jbpm;3、Osworkflow;4、Jflow。Shark的使用有两种方式:作为Corba服务和调用API。实际上,在我们安装Shark安装版后,根目录下有多个批处理文件,其中runAll.bat就是将它作为Corba服务启动,而runS…

    2023年2月6日
    16000
  • a卡和n卡的区别

    a卡和n卡的区别有:1、GPU流处理器不同;2、两者的设计侧重点不同;3、架构不同;4、两者对图像的处理区别;5、生产厂家不同。GPU流处理器不同是指N卡的GPU中每个流处理器都具有完整的ALU功能,而A卡的GPU中每个流处理器的5个流处理单元都是固定的。 1、GPU流处理器不同 N卡的GPU中每个…

    2023年1月27日
    40100
  • 管理者融入团队的计划怎么写

    撰写管理者融入团队计划的步骤:1、确定管理团队的角色和职责;2、分析团队计划的需求;3、确立计划的目标;4、确认资源和预算;5、制定管理计划;6、操作管理计划;7、改进管理计划。确定管理团队的角色和职责是指把团队成员安排在合适的位置。 一、撰写管理者融入团队计划的步骤 1、确定管理团队的角色和职责 …

    2023年4月13日
    2300
  • Testin云测总裁徐琨:创业必须要创造出肉眼可见的价值

    文| babayage 编辑 | 笑 笑 成长于分工不明确的时代 人生别设限 很多技术出身的企业高管,都是较早便意识到了成长转型的重要性,在人生抉择的关键节点有意迈出技术领域,跨部门、跨领域体验学习。相比之下,徐琨在职业生涯上半场是一位根正苗红的码农,自2004年初入职场,在技术领域整整深耕了10年…

    2022年3月20日
    16300
  • h5编程软件有哪些

    h5编程软件有:1、HBuilder;2、Notepad++;3、Dreamweaver;4、Sublime Text 3;5、Eclipse;6、EditPlus;7、WebStorm;8、UEStudio;9、FirHtml网页编辑器;10、Vim。HBuilder是DCloud推出的一款支持H…

    2023年1月10日
    28700
  • js里字符串函数有哪些

    js里字符串函数有:1、字符串转换toString;2、字符串分割split;3、字符串替换str.replace;4、获取字符串长度length。toString是属于Object原型上的一个方法。每一个对象都有一个 toString()方法。 默认的情况下,toString()方法被每一个对象继…

    2023年1月15日
    7400
  • 编程到底难在哪里

    编程难在:1、思维模式的切换;2、语言上的难度;3、超强的对耐心的挑战;4、需要复杂场景下的调度和场面掌控能力。维模式的切换是指编程需要有技术思维,能够成功建模,能在在两种思维模型之间转换,一种是看到的感受到的外行人视角,一种是技术思维。 1、思维模式的切换 你需要有技术思维,能够成功建模。这可能是…

    2023年1月12日
    12300

发表回复

登录后才能评论
联系我们
站长微信
站长微信
分享本页
返回顶部