STL
mmshixing
这个作者很懒,什么都没留下…
展开
-
C++ traits编程技法之__type_traits
__type_trivial 双底线前缀,表示是SGI STL以外的东西,不在STL标准范围之内。__type_trivial负责萃取型别(Type)的特性,究竟是什么特性呢? 注:trivial是英文“无意义的、不重要”的意思。 答曰:这个型别是否具备non-trivialdefalt ctor、non-trivial copy ctor、non-t原创 2016-06-13 13:59:41 · 4213 阅读 · 1 评论 -
SGI STL空间配置器-第一级空间配置器
一、SGI STL配置器简介 如果要了解STL的实现,必须要了解空间配置器,因为整个STL的操作对象都放在容器之内,而容器一定需要配置空间以存放数据等资料。allocator叫做空间配置器而不是内存配置器,因为空间不一定是内存,也可以是磁盘或者其他辅助存储介质。可以写一个allocator直接向硬盘取空间。当然这里介绍的allocator配置的是内存。 二、SGI标准的空间配置器 其实原创 2016-06-13 16:04:09 · 1583 阅读 · 0 评论 -
SGI STL空间配置器-第二级空间配置器
相比第一级配置器,第二级配置器多了一些机制,避免小额区块造成内存的碎片。小额区块不仅仅是碎片的问题,配置时的额外负担也是一个大问题。因为区块越小,额外负担所占的比例就越大,就越显得浪费。额外负担是指动态分配内存块的时候,位于其头部的额外信息,包括记录内存块大小的信息以及内存保护区(判断是否越界),即索取任何一块内存时,都要得有一些“税”要交给系统。SGI STL第二原创 2016-06-14 16:51:30 · 1307 阅读 · 0 评论 -
红黑树(RB-tree)比AVL树的优势在哪?
今天看了STL源码剖析中关于红黑树的原理和实现,看完复杂的节点插入、节点颜色变换后不禁想:这些功能经典的AVL树也能实现,为什么要提出红黑树?查了些资料,并且加上自己理解,感叹红黑树的巧妙。首先红黑树是不符合AVL树的平衡条件的,即每个节点的左子树和右子树的高度最多差1的二叉查找树。但是提出了为节点增加颜色,红黑是用非严格的平衡来换取增删节点时候旋转次数的降低,任何不平衡都会在三次旋转之内解决原创 2016-06-16 17:03:24 · 49544 阅读 · 6 评论 -
string 类的实现
string类的实现,主要包含这几个函数:构造、拷贝构造、析构、赋值、比较、字符串相加、获取长度及子串。下面是代码:#include #include using namespace std;class String{ public: String(const char* str = NULL ); //普通构造函数 String(const String原创 2016-06-22 17:10:35 · 434 阅读 · 0 评论