我有自定义二叉树类,它保存模板类型的值T
(它可以是值或指针)。每个值都用数字封装(这个数字用于在树中搜索)。我想std::map
在我的树类中有一个快速 O(1) 访问没有数字的对象。
template <typename T>
stuct BSTNode
{
T value;
int searchValue;
}
template <typename T>
class BST
{
BSTNode<T> * root;
std::map<T, BSTNode<T>> cache;
//... etc.
}
示例:我a
在 value 下的树中插入了类实例n
。现在我想获取与 this 关联的节点a
。我无法搜索树,因为我没有n
. 所以我想用a
, 并从std::map
get node = map[a]
。现在我可以做到了node->n
。
我怎样才能做到这一点?我可以覆盖比较方法std::map
:
bool operator()(const void * s1, const void * s2) const
但它不能同时用于值和指针:不能将参数 1 从 转换const double
为const void *
.