1. 两个版本

1.1 参数是指针

template <class T> inline void destroy(T* pointer) {pointer->~T();  // 调用析构函数
}

1.2. 参数接受两个迭代器

接受两个迭代器。它会设法找出元素的数值型別,进而利用 __type_traits<> 求取最适当措施。

template <class ForwardIterator>
inline void destroy(ForwardIterator first, ForwardIterator last) {__destroy(first, last, value_type(first));
}

->
判断元素的数值型別(value type)是否有 trivial destructor,分别调用上面的函数进行不同的处理

template <class ForwardIterator, class T>
inline void __destroy(ForwardIterator first, ForwardIterator last, T*) {typedef typename __type_traits<T>::has_trivial_destructor trivial_destructor;__destroy_aux(first, last, trivial_destructor());
}

->

// 如果元素的数值型別(value type)有 non-trivial destructor…
template <class ForwardIterator>
inline void
__destroy_aux(ForwardIterator first, ForwardIterator last, __false_type) {for ( ; first < last; ++first)destroy(&*first);//调用析构函数
}// 如果元素的数值型別(value type)有 trivial destructor…
template <class ForwardIterator>
inline void __destroy_aux(ForwardIterator, ForwardIterator, __true_type) {}//不调用析构函数

STL源代码分析(ch2 内存分配)destroy相关推荐

  1. 全网最硬核 JVM TLAB 分析 1. 内存分配思想引入

    今天,又是干货满满的一天.这是全网最硬核 JVM 系列的开篇,首先从 TLAB 开始.由于文章很长,每个人阅读习惯不同,所以特此拆成单篇版和多篇版 全网最硬核 JVM TLAB 分析(单篇版不包含额外 ...

  2. STL中Vector的内存分配机制

    一些好的公司校园招聘过程中(包括笔试.面试环节),经常会涉及到STL中vector的使用(主要是笔试)及其性能(面试)的分析.今天看了下相关文章,也写了几个小的测试程序跑了跑.算是总结下,希望对需要的 ...

  3. STL源代码分析(ch2 内存分配)jjalloc.h

    1. jjalloc.h namespace JJ{ template<class T>inline T* _allocate(ptrdiff_t size,T*){ //当operato ...

  4. STL源代码分析(ch2 内存分配)概述

    1. 使用场景 2. 配置器定义在头文件中 //负责内存空间的配置与释放; <stl_alloc.h>//文件中定义了一.二两级配置器,彼此合作,配置器名为alloc. //负责对象内容的 ...

  5. STL源代码分析(ch2 内存分配)uninitialized_fill_n

    1. uninitialized_fill_n(ForwardIter first, Size n, const T& value) 从 first 位置开始,填充 n 个元素值,返回填充结束 ...

  6. STL源代码分析(ch 1)概述

    1. 6大组件 容器(containers):各种数据结构,如vector.list.deque.set.map,用来存放数据.从实现来看,STL容器是一种 class template. 算法(al ...

  7. STL 源代码分析 算法 stl_algo.h -- includes

    本文senlie原,转载请保留此地址:http://blog.csdn.net/zhengsenlie includes(应用于有序区间) ------------------------------ ...

  8. STL源代码分析(ch 1)组态2

    4. __STL_MEMBER_TEMPLATES 模板类中包含模板成员,是否支持template members of classes class vec {public:typedef T val ...

  9. STL源代码分析(ch 1)组态1

    1. __STL_STATIC_TEMPLATE_MEMBER_BUG static member of template classes(模板类静态成员) template <typename ...

最新文章

  1. python写byte数组到文件_这可能是写过最详细的Python文件操作。网友:收藏备用(中篇)...
  2. SQL基础学习总结:2(表的创建、删除、更新和名称修改)
  3. Deep Learning | 深度学习介绍与基本概念
  4. tomcat配置虚拟目录,虚拟目录,tomcat目录,tomcat服务器,网站图片虚拟目录
  5. TypeError: only integer scalar arrays can be converted to a scalar index一例
  6. cad钣金展开插件_户外垃圾桶顶盖钣金拆分展开方法
  7. 励志!从中专生到清华博士的逆袭人生
  8. 5 获取当前访问的控制名称_LabVIEW编程技巧:网络通信中如何获取计算机名称、IP地址等信息...
  9. ProxyPass与ProxyPassReverse及ProxyPassMatch的概述
  10. Thread类中的常用方法
  11. wifi 小米pro 驱动 黑苹果_小米Pro 15.6英寸(i7 8550U-MX110)游戏本黑苹果
  12. java xml 多层解析_多级xml解析方案
  13. 高通平台msm8953 display子系统学习
  14. UNI-APP前后端实战课《悦读》
  15. 利用ECharts实现数据的左右移动
  16. 安卓排除美颜相机等第三方相机直接调用系统相机处理方法
  17. 从借呗借了100元,看背后的系统架构
  18. Google Map Event 谷歌地图事件
  19. 云服务器布置_云服务器配置方案
  20. 区块链辅助物联网形成商业闭环

热门文章

  1. Vector 所有元素相加求和
  2. SpringBoot+Vue视频干货
  3. linux复制文件命令cat ,Linux学习之四(复制移动文件命令cp等及查看文本命令cat等)2017-03-28...
  4. python coroutine_笔记-python-coroutine
  5. java中交通灯管理系统_java案例--交通灯管理系统学习
  6. IDC干货:5个维度!全面综合分析我国城市数据中心发展情况
  7. 据中心水冷系统备品备件管理新思路
  8. 开关电源雷击浪涌整改_大佬多年经验总结,开关电源EMI整改策略
  9. python不等式编程_在Python中pandas列上的不等式
  10. 高中生学python培养思维能力_基于培养思维能力的Python语言程序设计教学