最近在看《stl源码剖析》,看到了红黑树的一章,就想根据书上的代码自己动手实现一下。现在只实现到树的构建与插入功能;节点删除和修改功能还未实现。写完之后发现自己用的Ubuntu16.04的g++5.4.0上与书上的g++版本相差太大,比如其中的空间分配器的使用已经完全不同。我只得照着g++5.4.0的源码再修改已经写好的代码,所以代码中有着很多c++11标准的语法与书上的老标准的语法穿插的情况。现在把写好的代码放上来,也算是一个记录。删除和修改功能以后有空在写吧。。。
代码如下:
/*
* RB_tree.h
*
* Created on: Jul 11, 2018
* Author: [email protected]
*/
#include
#include
//#include
#include
#include
#include
#include
//#include
#include
#include
#include
//#include
下面是调用代码:
/*
* test.cpp
*
* Created on: Jul 31, 2018
* Author: clh01s
*/
#include
#include "RB_tree.h"
using namespace std;
int main()
{
RB_Tree, std::less, std::allocator> a;
cout<<"插入之前树的大小:"< rbtite;
for(auto it = a.begin();it != a.end(); ++it)
{
// rbtite = __rb_tree_base_iterator(it);
cout<<*it<
输出结果:
clh01s@clh01s:~/testcode/数据结构$ g++ test.cpp -std=c++11
clh01s@clh01s:~/testcode/数据结构$ ./a.out
插入之前树的大小:0
插入之后树的大小:4
value = 4
value = 5
value = 6
value = 13
转载请注明原地址:https://blog.csdn.net/clh01s/article/details/83269466