STL学习

第一章

STL六大组件 功能与运用

  • 容器(containers):各种数据结构,如vector,list,的去,色图,马匹 用来存放数据 STL容器是一种 class template
  • 算法(algorithms):如 sort,search,copy,erase…,从实现角度看,STL算法是一种 function template
  • 迭代器(iterators) :扮演容器与算法之间的胶合剂,是所谓的“泛型指针”,从实现角度讲,迭代器是一种将 operator*,operator->,operator++,operator–等指针相关操作予以重载的 class template
  • 仿函数(functors):从实现的角度来看,仿函数是一种重载了 operator()的class或class template
  • 配接器(adapters):一种用来修饰容器或仿函数或迭代器接口的东西
  • 配置器(allocators) 从实现的角度来看,配置器是一个实现了动态空间配置,空间管理,空间释放的 class template
    在这里插入图片描述

第二章 空间配置器

说空间而不是内存是因为 空间不一定是内存,空间也可以是磁盘或其他辅助存储介质

//以下是 allocator 的必要接口
allocator::value_type
allocator::pointer
allocator::const_pointer
allocator::reference
allocator::const_reference
allocator::size_type
allocator::differedce_type
allocator::rebind

构造和析构基本工具:construct() 和 destroy()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
trivial destructor : 如果用户不定义析构函数,而是用系统自带的,则说明,析构函数基本没有什么用(但默认会被调用)我们称之为trivial destructor。反之,如果特定定义了析构函数,则说明需要在释放空间之前做一些事情,则这个析构函数称为non-trivial destructor。如果某个类中只有基本类型的话是没有必要调用析构函数的,delelte p的时候基本不会产生析构代码

空间的配置与释放,std::alloc

对象构造前的空间配置和对象析构后的空间释放,由<std_alloc.h>负责,SGI对此的设计哲学如下:

  • 向system heap 要求空间
  • 考虑多线程状态
  • 考虑内存不足时的应急措施
  • 考虑过多 “小型区块”可能造成的内存碎片问题
    在这里插入图片描述
    在这里插入图片描述

第一级配置器 __malloc_alloc_template 剖析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值