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

发布时间:2024年01月17日

目前在学习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 函数

文章来源:https://blog.csdn.net/gengxt2003/article/details/135653395
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。