MyTinySTL 简单分析(三)--allocator.h construct.h

本文介绍了作者在学习开源项目MyTinySTL时对C++STL中vector的分析,重点关注了construct.h中的place_new构造方法以及allocator.h中allocator类的function,包括析构函数的调用策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前在学习STL,看到一个开源的项目MyTinySTL,非常不错。想着照着这个代码自己敲一遍应该也能有些进步。然后就开始了学习过程。

首先分析的是vector

以下是由vector.h关联的所有头文件

这里分析一下allocator.h 和 相关的construct.h

construct.h文件中,

首先要了解一下std::is_trivially_destructible, 这个函数判断模板参数是否有一个微不足道的析构函数(trivially,微不足道,即不重要)

对于一些简单的基本类型,他们没有析构函数,那这个std::is_trivially_destructible::value 就是true,如果有正常的析构函数,则为false

construct.h中定义了construct 函数和destroy,其中construct函数中使用了place_new 的构造方式,

介绍一下place new: 简单来说就是在一个已经分配好的内存空间上直接调用构造函数,在那个空间上构造出一个对象来,省去了拷贝或者移动的麻烦,效率较高

destroy 函数分别调用了destroy_one(析构一个对象) 和 destroy_cat(析构一些对象),

只有传入的is_trivially_destructible为false的时候,才会去调用对应的析构函数(是不重要的吗? false,不是,那就表示重要的)

=================================

allocator.h文件

这个文件中定义了allocator类,该类主要定义了四个函数,allocate deallocate, construct, destroy

前两个函数分别调用new 和 delete, 后面两个调用了construct.h中的对应的construct 和 destroy 函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值