テンプレートタイプの値を保持するカスタムバイナリツリークラスが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.
}
例:ツリーのvalueの下にクラスインスタンスをa
挿入しましたn
。ここで、これに関連付けられているノードを取得しますa
。持っていないので、ツリーを検索できませんn
。だから私はを使いたいa
、そしてstd::map
getからnode = map[a]
。今、私はすることができますnode->n
。
どうすればこれを達成できますか?のcompareメソッドをオーバーライドできますstd::map
:
bool operator()(const void * s1, const void * s2) const
ただし、値とポインタに対しては同時に機能しません。パラメータ1をからconst double
に変換することはできませんconst void *
。