B+树C++代码发布
代码:http://bluedog.download.youkuaiyun.com
没什么太多可以说的,B+树的c++模板实现,需要说明的一点是
1、枝干节点的关键字在每个叶子节点的最后一个
2、叶子节点中的Vals不是值集合,而是值指针集合,主要是减少移动时的拷贝时间
本来也想Keys也做也指针集合,但是会有一个问题,如果当做数据库的索引,它就必需调阅多个页
当然Keys是值集合也会有问题,对于字符串来作Key就会有对象拷贝的问题
因此我觉得要实现两种B+树,一种是值集合的,一种是值指针集合的,
对此有兴趣的朋友可以共同探讨,发邮件至 xtlxs1976@163.com
3、算法书上说B+树比B-树要简单,它认为被删除的Key仍可以保留在树枝干中,我觉得或许作为
磁盘或数据库的索引管理是合理的,但作为一个完整的算法B+树比B-树要复杂得多,比如删除一个KEY后的调整有八种情况,而B-树只要考虑四种。
本来想找大量数据来测试,开始写了QQwry.dat的转换代码,最新版的大约有30多万条记录,也就是网上流行的纯真IP地址数据库,写完之后发现因为我写的B+树是值类型的,如果进行字符串作KEY,会很慢的,也就没测了。不过QQWry.dat的转换代码还是很好用的,也在这个RAR文件中,你需要的可以用一用。
好了,还是老样子,如果你发现了bug或者你在程序中使用了这个类,请发个mail给我!