STL源代码分析(ch2 内存分配)destroy
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相关推荐
- 全网最硬核 JVM TLAB 分析 1. 内存分配思想引入
今天,又是干货满满的一天.这是全网最硬核 JVM 系列的开篇,首先从 TLAB 开始.由于文章很长,每个人阅读习惯不同,所以特此拆成单篇版和多篇版 全网最硬核 JVM TLAB 分析(单篇版不包含额外 ...
- STL中Vector的内存分配机制
一些好的公司校园招聘过程中(包括笔试.面试环节),经常会涉及到STL中vector的使用(主要是笔试)及其性能(面试)的分析.今天看了下相关文章,也写了几个小的测试程序跑了跑.算是总结下,希望对需要的 ...
- STL源代码分析(ch2 内存分配)jjalloc.h
1. jjalloc.h namespace JJ{ template<class T>inline T* _allocate(ptrdiff_t size,T*){ //当operato ...
- STL源代码分析(ch2 内存分配)概述
1. 使用场景 2. 配置器定义在头文件中 //负责内存空间的配置与释放; <stl_alloc.h>//文件中定义了一.二两级配置器,彼此合作,配置器名为alloc. //负责对象内容的 ...
- STL源代码分析(ch2 内存分配)uninitialized_fill_n
1. uninitialized_fill_n(ForwardIter first, Size n, const T& value) 从 first 位置开始,填充 n 个元素值,返回填充结束 ...
- STL源代码分析(ch 1)概述
1. 6大组件 容器(containers):各种数据结构,如vector.list.deque.set.map,用来存放数据.从实现来看,STL容器是一种 class template. 算法(al ...
- STL 源代码分析 算法 stl_algo.h -- includes
本文senlie原,转载请保留此地址:http://blog.csdn.net/zhengsenlie includes(应用于有序区间) ------------------------------ ...
- STL源代码分析(ch 1)组态2
4. __STL_MEMBER_TEMPLATES 模板类中包含模板成员,是否支持template members of classes class vec {public:typedef T val ...
- STL源代码分析(ch 1)组态1
1. __STL_STATIC_TEMPLATE_MEMBER_BUG static member of template classes(模板类静态成员) template <typename ...
最新文章
- python写byte数组到文件_这可能是写过最详细的Python文件操作。网友:收藏备用(中篇)...
- SQL基础学习总结:2(表的创建、删除、更新和名称修改)
- Deep Learning | 深度学习介绍与基本概念
- tomcat配置虚拟目录,虚拟目录,tomcat目录,tomcat服务器,网站图片虚拟目录
- TypeError: only integer scalar arrays can be converted to a scalar index一例
- cad钣金展开插件_户外垃圾桶顶盖钣金拆分展开方法
- 励志!从中专生到清华博士的逆袭人生
- 5 获取当前访问的控制名称_LabVIEW编程技巧:网络通信中如何获取计算机名称、IP地址等信息...
- ProxyPass与ProxyPassReverse及ProxyPassMatch的概述
- Thread类中的常用方法
- wifi 小米pro 驱动 黑苹果_小米Pro 15.6英寸(i7 8550U-MX110)游戏本黑苹果
- java xml 多层解析_多级xml解析方案
- 高通平台msm8953 display子系统学习
- UNI-APP前后端实战课《悦读》
- 利用ECharts实现数据的左右移动
- 安卓排除美颜相机等第三方相机直接调用系统相机处理方法
- 从借呗借了100元,看背后的系统架构
- Google Map Event 谷歌地图事件
- 云服务器布置_云服务器配置方案
- 区块链辅助物联网形成商业闭环
热门文章
- Vector 所有元素相加求和
- SpringBoot+Vue视频干货
- linux复制文件命令cat ,Linux学习之四(复制移动文件命令cp等及查看文本命令cat等)2017-03-28...
- python coroutine_笔记-python-coroutine
- java中交通灯管理系统_java案例--交通灯管理系统学习
- IDC干货:5个维度!全面综合分析我国城市数据中心发展情况
- 据中心水冷系统备品备件管理新思路
- 开关电源雷击浪涌整改_大佬多年经验总结,开关电源EMI整改策略
- python不等式编程_在Python中pandas列上的不等式
- 高中生学python培养思维能力_基于培养思维能力的Python语言程序设计教学