
STL剖析
文章平均质量分 82
bolike
这个作者很懒,什么都没留下…
展开
-
《STL源码剖析》—— 空间配置器(五)
一、内存基本处理工具 STL定义有五个全局函数,作用于未初始化空间上。前两个函数是用于构造的 construct() 和用于析构的 destroy(),另三个函数 uninitialized_copy(),uninitialized_fill(),uninitialized_fill_n(),分别对应于高层次函数 copy()、fill()、fill_n() —— 这些都是STL原创 2014-02-20 20:51:12 · 1463 阅读 · 0 评论 -
《STL源码剖析》—— stl_config.h
参考侯捷《STL源码剖析》#ifndef __STL_CONFIG_H# define __STL_CONFIG_H// 本文件所做的事情:// (1) 如果编译器没有定义 bool,true,false,就定义它们// (2) 如果编译器的标准程序库未支持 drand48() 函数,就定义 __STL_NO_DRAND48// (3) 如果编译器无法处理 static原创 2014-02-12 22:26:56 · 1775 阅读 · 0 评论 -
《STL源码剖析》——迭代器(iterators)概念与traits编程技法(二)
一、SGI STL 的私房菜:__type_traits __type_traits 负责萃取型别(type)的特性。此处所关注的型别特性是指:这个型别是否具备 non-trivial defalt ctor?是否具备 non-trivial copy ctor?是否具备 non-trivial assignment operator?是否具备 non-trivial dtor?原创 2014-02-25 22:53:37 · 1541 阅读 · 0 评论 -
《STL源码剖析》——迭代器(iterators)概念与traits编程技法(一)
一、迭代器设计思维——STL关键所在 STL的中心思想在于:将数据容器(containers)和算法(algorithms)分开,彼此独立设计,最后再以一帖粘合剂将它们撮合在一起。二、迭代器(iterator)是一种 smart pointer 迭代器是一种行为类似指针的对象,而指针的各种行为中最常见也最重要的便是内容提领(dereference)和成员访问原创 2014-02-25 21:47:18 · 1156 阅读 · 0 评论 -
《STL剖析》——空间配置器(一)
SGI STL 的配置器与众不同,也与标准规范不同,其名称是 alloc 而非 allocator ,而且不接受任何参数。一、SGI标准的空间配置器,std::allocator 虽然 SGI 也定义有一个符合部分标准、名为 allocator 的配置器,但 SGI 从未用过它,也不建议我们使用。主要原因是效率不佳,只把 C++ 的 ::operator new 和 ::op原创 2014-02-18 20:59:52 · 991 阅读 · 0 评论 -
《STL源码剖析》—— 空间配置器(二)
一。构造和析构基本工具:construct() 和 destroy()#ifndef __SGI_STL_INTERNAL_CONSTRUCT_H#define __SGI_STL_INTERNAL_CONSTRUCT_H// 欲使用 placement new,需先包含此文件#include __STL_BEGIN_NAMESPACE// 以下是 destroy() 第一版本原创 2014-02-18 21:31:00 · 1240 阅读 · 0 评论 -
《STL源码剖析》—— 空间配置器(三)
一、空间的配置与释放,std::alloc 对象构造前的空间配置和对象析构后的空间释放,由负责,SGI对此的设计哲学如下: 1. 向 system heap 要求空间。 2. 考虑多线程(multi-threads)状态。 3. 考虑内存不足时的应变措施。 4. 考虑过多“小型区块”可能造成的内存碎片(fra原创 2014-02-19 22:11:35 · 1273 阅读 · 0 评论 -
《STL源码剖析》—— 空间配置器(四)
一、第二级配置器 __default_alloc_template 剖析 为了方便管理,SGI第二级配置器会主动将任何小额区块的内存需求量上调至 8 的倍数,并维护 16 个free-lists,各自管理大小分别为 8, 16, 24, 32, 40, 48, 56,64, 72,80,88,96,104,112,120,128 bytes的小额区块。free-lists的节点结原创 2014-02-20 05:05:55 · 1304 阅读 · 0 评论