赞
踩
enum Color { //枚举,一一列举出事物具有的所有可能 Red, //枚举常量,给枚举变量进行赋值 Black, }; template<class T>//红黑树的节点 struct RBTreeNode { typedef RBTreeNode<T> Node; //三叉链-》优点:便于查找孩子、父亲节点 Node* _left; //该节点的左孩子 Node* _right; //该节点的右孩子 Node* _parent; //该节点的父亲,便于向上更新 T _data; Color _col; RBTreeNode(const T& data, Color col = Red) //构造函数 :_data(data) , _left(nullptr) , _right(nullptr) , _parent(nullptr) , _col(col) //默认新插入节点的颜色为红色 { } };
//Value决定你是k模型的set、还是KV模型的map
template<class K, class T, class KeyOfT>
class RBTree {
public:
typedef RBTreeNode<T> Node;
};
template<class K>
class set{ //K模型
public:
private: //set中的key不允许被修改
RBTree<K, const K, SetKeyOfT> _t; //红黑树对象
};
}
template<class K, class V>
class map { //KV模型
public:
private: //map中的key不允许被修改
RBTree<K, pair<const K, V>, MapKeyOfT> _t; //红黑树对象
};
};
// KeyOfT : 取出Value对象中的key
template<class K, class T, class KeyOfT>
class RBTree { };
struct SetKeyOfT{
const K& operator()(const K& key)
{
return key; //key
}
};
struct MapKeyOfT {
const K& operator()(const pair<K, V>& kv)
{
return kv.first; //pair中的key
}
};
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/705989
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。