Hackbuteer1的专栏

走别人没走过的路,让别人有路可走。

STL源码剖析---红黑树原理详解下

算法导论书上给出的红黑树的性质如下,跟STL源码剖析书上面的4条性质大同小异。       1、每个结点或是红色的,或是黑色的       2、根节点是黑色的       3、每个叶结点(NIL)是黑色的       4、如果一个节点是红色的,则它的两个儿子都是黑色的。       5、对于每个结...

2012-07-18 19:54:08

阅读数 20296

评论数 12

STL源码剖析---红黑树原理详解上

一、红黑树概述      红黑树和我们以前学过的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。不过自从红黑树出来后,AVL树就被放到了博物馆里,据说是红黑树有更好的效率,更高的统计性能。这一点在我们了解了红黑树的实现原理后,就会有更加深切的体会。...

2012-07-12 16:31:23

阅读数 22177

评论数 13

STL源码剖析---STL容器特征总结(含迭代器失效)

Vector 1、内部数据结构:连续存储,例如数组。 2、随机访问每个元素,所需要的时间为常量。 3、在末尾增加或删除元素所需时间与元素数目无关,在中间或开头增加或删除元素所需时间随元素数目呈线性变化。 4、可动态增加或减少元素,内存管理自动完成,但程序员可以使用reserve()成员函数...

2012-07-10 22:09:34

阅读数 6820

评论数 4

STL源码剖析---迭代器失效小结

迭代器(iterator)是一个可以对其执行类似指针的操作(如:解除引用(operator*())和递增(operator++()))的对象,我们可以将它理解成为一个指针。但它又不是我们所谓普通的指针,我们可以称之为广义指针,你可以通过sizeof(vector::iterator)来查看,所占内...

2012-07-10 21:32:20

阅读数 12121

评论数 3

STL源码剖析---deque

一、deque的中控器       deque是连续空间(至少逻辑上看来如此),连续线性空间总令我们联想到array或vector。array无法成长,vector虽可成长,却只能向尾端成长,而且其所谓的成长原是个假象,事实上是(1)另觅更大空间;(2)将原数据复制过去;(3)释放原空间三部曲。...

2012-07-09 15:44:59

阅读数 11177

评论数 4

STL源码剖析---list

相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。       list不仅是一个双向链表,而且还是一个环状...

2012-07-08 11:11:34

阅读数 10370

评论数 5

STL源码剖析---vector

vector容器概述       vector的数据安排以及操作方式,与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变;要换个大(或小)一点的房子,可以,一切琐细都得由客户端自己来:首先配置一块新空间,然后将元素从旧址一一搬往新址,再把原来的...

2012-07-07 14:41:31

阅读数 14624

评论数 6

STL源码剖析---空间配置器

看过STL空间配置器的源码,总结一下:       1、STL空间配置器:主要分三个文件实现,stl_construct.h  这里定义了全局函数construct()和destroy(),负责对象的构造和析构。stl_alloc.h文件中定义了一、二两级配置器,彼此合作,配置器名为alloc....

2012-07-07 14:31:27

阅读数 9778

评论数 7

大端模式和小端模式

在 各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机 通信领 域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正 确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字...

2012-07-06 16:33:28

阅读数 60609

评论数 10

提示
确定要删除当前文章?
取消 删除
关闭
关闭