自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hackbuteer1的专栏

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

  • 博客(9)
  • 资源 (1)
  • 收藏
  • 关注

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

算法导论书上给出的红黑树的性质如下,跟STL源码剖析书上面的4条性质大同小异。      1、每个结点或是红色的,或是黑色的      2、根节点是黑色的      3、每个叶结点(NIL)是黑色的      4、如果一个节点是红色的,则它的两个儿子都是黑色的。      5、对于每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑色结点。      从红黑树上删除一

2012-07-18 19:54:08 21229 12

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

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

2012-07-12 16:31:23 25891 11

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

Vector1、内部数据结构:连续存储,例如数组。2、随机访问每个元素,所需要的时间为常量。3、在末尾增加或删除元素所需时间与元素数目无关,在中间或开头增加或删除元素所需时间随元素数目呈线性变化。4、可动态增加或减少元素,内存管理自动完成,但程序员可以使用reserve()成员函数来管理内存。5、迭代器失效插入:vector的迭代器在内存重新分配时将失效(它所指向的元素在该

2012-07-10 22:09:34 7200 4

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

迭代器(iterator)是一个可以对其执行类似指针的操作(如:解除引用(operator*())和递增(operator++()))的对象,我们可以将它理解成为一个指针。但它又不是我们所谓普通的指针,我们可以称之为广义指针,你可以通过sizeof(vector::iterator)来查看,所占内存并不是4个字节。     首先对于vector而言,添加和删除操作可能使容器的部分或者全部迭代器

2012-07-10 21:32:20 12891 3

原创 STL源码剖析---deque

一、deque的中控器      deque是连续空间(至少逻辑上看来如此),连续线性空间总令我们联想到array或vector。array无法成长,vector虽可成长,却只能向尾端成长,而且其所谓的成长原是个假象,事实上是(1)另觅更大空间;(2)将原数据复制过去;(3)释放原空间三部曲。如果不是vector每次配置新空间时都有留下一些余裕,其成长假象所带来的代价将是相当高昂。

2012-07-09 15:44:59 11821 4

原创 STL源码剖析---list

相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。      list不仅是一个双向链表,而且还是一个环状双向链表。另外,还有一个重要性质,插入操作和接合操作都不会造成原有的list迭代器失效,这在vecto

2012-07-08 11:11:34 11476 5

原创 STL源码剖析---vector

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

2012-07-07 14:41:31 15786 6

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

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

2012-07-07 14:31:27 10716 7

原创 大端模式和小端模式

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

2012-07-06 16:33:28 65352 9

快速筛选素数

快速筛选出10亿以内的素数和非素数

2012-04-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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