本人开学后花了三天终于在昨天3.10(也是本人的阳历生日)完成了红黑树的实现 自认为没有bug…… 不过感觉接口设计上不是很好,觉得得学习一下stl 源码在github上,点这里 上面那个是看思路自己意淫出来的,这里有个模仿STL的版本 但是没有改好。。还有几个error…… 除此之外,特别想说一个知识点,就是在模板实现上,其声明和定义是不能卸载两个文件里的,因为在编译的时候,编译器就必须知道类的大小(好吧,其实我也解释不大来…… 非要写在两个文件里的话,我只知道特化,当然,这不是很可取。…

一点废话 最近终于看完了《STL源码剖析》的前三章,个人觉得前三章是这本书最重要的部分,考虑到时间问题(简历还没投啊,拖太晚了),其他的具体实现先放放也罢。 关于STL中的空间配置器(allocator),在STL的运用角度上看,空间配置器是最不需要知道的东西。而在STL的实现上,空间配置器是最必须也是最先需要知道的东西。 乱七八糟的东西 首先我们必须知道的是,在C++中通过new一个新的对象,它的实际步骤可以分为两个部分:配置内存(allocat),调用构造函数(construct)。而当我们通过delete一个对象的时候,…

动态链接库与静态链接库的区别 静态链接库 静态链接库是将整个库文件都与目标程序链接在一起,整合到一个可执行文件中。 动态链接库 动态链接库与静态链接库相反,在可执行文件中,只记录了库文件的一些信息(位置啊,函数名什么的……瞎猜的),在需要的时候有OS进行调用。 另外动态链接还分为载入时链接,与运行时链接。 载入时链接是在程序载入时,将整个库文件同时载入,而运行时链接是在程序运行时发现这段函数程序未在内存中而由OS载入。 可以理解成运行时链接是动态的动态。 区别与比较 一点小区别: 静态链接库不能引用其他库文件,而动态链接库则可以。 以下讨论两者优劣势力,只谈优势,因为动态链接库的优势就是静态链接库的劣势,…

本文转自此博文,因无法联系作者擅自转载,若需要删除请作者留言 只有首先调用close()发起主动关闭的一方才会进入TIME_WAIT状态,进入TIME_WAIT状态的TCP连接需要经过2MSL才能回到初始状态,其中,MSL是指Max Segment Lifetime,即数据包在网络中的最大生存时间。每种TCP协议的实现方法均要指定一个合适的MSL值,如RFC1122给出的建议值为2分钟,又如Berkeley体系的TCP实现通常选择30秒作为MSL值。这意味着TIME_WAIT的典型持续时间为1-4分钟。 产生原因及好处 对于TIME_WAIT的存在,有两个理由。一个原因是为了防止一个连接中延迟的数据段会被后序的连接错误的解析。当一个连接处于2MSL状态的时候,任何到达的数据段都将会被丢弃。…

自从上一次写完红黑树入门已经过去一个多月了……当时天真的我觉得就算再难只要花个一个下午就可以把删除操作搞懂,然而……………… 阅前须知 但是我现在在这里申明一点,其实红黑树的删除操作也算不上太难,有一点是因为分类情况太多了。而我迟迟没有理解的一个主要原因在于 我们讨论的删除节点并不是我们在红黑树删除操作中传入的删除的节点,而是被删除节点的替换节点 因为在二叉查找树的删除过程中,被删除的节点实际上会被一个前驱最大节点或者是后继最小节点来替代。 而我们在红黑树中,可以在替换节点的同时,替换节点的颜色改成删除节点的颜色,那么我们的修复目标一下子缩小到了几乎是最下面的子树层,并且对删除节点处的性质并没有任何改变。实在是妙极! 另外感谢这篇文章,我是通过这个博文学习的,并且图片也来自这个博客,写的很好,推荐。 正文 由前文所得,…