65.9K
CodeProject 正在变化。 阅读更多。
Home

我使用模板开发了一个B+树,请多多享用。

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.67/5 (5投票s)

2008年9月16日

CPOL
viewsIcon

26088

downloadIcon

368

B+Tree

引言

这是一个B+树的实现。

背景

数据库系统基础。第五版。韩语翻译。

使用代码

包含 BPNode.h 和 BPTree.h。
你可以像下面这样使用 CBPTree<Key, Value, Degree>。
Degree 的默认值为 2。

// using bptree
#include "BPNode.h"
#include "BPTree.h"

CBPTree<int, std::string> bpTree;
// Supports B+Tree Insert, Delete command.

bpTree.Insert(10, "This is a test");
std::string s;
if(bpTree.Search(10, s))
{
    cout << s;
}
else
{

    cerr << "Key not found" << endl;
} 
// Also support an iterator.
CBPTree<int, std::string>::iterator i;

for(i = bpTree.begin(); i != bpTree.end(); i++)

{
    cout << *i << " ";
}

请参考源代码了解如何使用它。
我使用 Visual Studio 2008 开发的。但是,我尝试编写使其能够与任何 C++ 编译器一起工作。我想在 Linux 上编译它。但我没有 Linux 机器。如果有人尝试,请告诉我结果。
当你在 VS2008 中打开项目时,你可以看到索引(中间)节点和叶节点是如何分裂的。请不要责怪我画得粗糙。;)

我将改进它以支持 [] 运算符,就像 std::map 一样。
进一步的改进将支持基于磁盘的 B+树,更通用的节点类等。

请告诉我你的评论、建议、测试结果或错误…
收到任何反馈我都会非常高兴。

关注点

制作一个美观的 UI 总是很难。;)

历史

2008. 9. 16. 首次上传。

© . All rights reserved.