STL源码剖析 --- 空间配置器 std::alloc

本文详细介绍了STL中空间配置器std::alloc的内部工作原理,包括其双层配置策略,以及如何通过simple_alloc进行封装。STL的空间配置器分为直接使用Malloc()和free()的第一级配置器,以及针对小块内存优化的第二级配置器,以减少内存碎片。此外,文章还提到了用于对象构造和析构的全局函数,以及uninitialized_copy等高效初始化内存的函数。
摘要由CSDN通过智能技术生成

 STL是建立在泛化之上的。数组泛化为容器,参数化了所包含的对象的类型。函数泛化为算法,参数化了所用的迭代器的类型。指针泛化为迭代器,参数化了所指向的对象的类型。STL中的六大组件:容器、算法、迭代器、配置器、适配器、仿函数。

这六大组件中在容器中分为序列式容器和关联容器两类,正好作为STL源码剖析这本书的内容。迭代器是容器和算法之间的胶合剂,从实现的角度来看,迭代器是一种将operator*、operator->、operator++、operator—等指针相关操作予以重载的class template.所有STL容器都附带有自己专属的迭代器,因为只有容器设计者才知道如何遍历自己的元素。仿函数是一种重载了operator()的class或class template,一般函数指针可视为狭义的仿函数。配接器是一种用来修饰容器或仿函数或迭代器接口的东西,例如STL提供的queue和stack,虽然看似容器,其实只能算是一种容器配接器,因为他们的底部完全借助deque,所有操作都由底层的deque供应。改变functor接口者,成为funciton adapter;改变container接口者,成为container adapter;改变iterator接口者,成为iterator adapter。

        

         在STL内部定义了几类迭代器,但是在使用的时候,根据迭代器的使用方法可以将迭代器分为输入、输出迭代器、前向、双向迭代器、随机存取迭代器。

         STL所实现的,是依据泛型思维架设起来的一个概念结构。这个以抽象概念为主体而非以实际类为主体的结构,形成了一个严谨的接口标准。在此接口之下,任何组件都有最大的独立性,并以所谓迭代器胶合起来,或以所谓配接器互相配接,或以所谓仿函数动态选

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值