はunordered_map
を考えてみましょう:unordered_mapをツリーデータ構造で効率的に実装する方法は?
template<
class Key,
class T,
class Hash = std::hash<Key>,
class KeyEqual = std::equal_to<Key>,
class Allocator = std::allocator< std::pair<const Key, T> >
> class unordered_map;
私は(a==b)
が!(a<b) && !(b>a)
よりも高速ですけど、unordered_map
は、マップ内のキーを格納/比較することstd::less<Key>
を使用していないので、私はどのようにあるツリーデータ構造により、実装の利益を得ることができるだろう同じバケット内の異なるキーを読み書きする最も効率的な方法です。 KeyからKeyWrapperへの変換を定義したoperator<()
は、ツリーを使った実装では避けられないようです。
私はあなたがここで何を求めているか完全にはわかりません。あなたはバケット内で木を使うことについて話していますか?または、ハッシュテーブルの代わりにツリーを使用しますか?しかし、あなたの一般的な質問:効率的なツリーの場合は、適切にツリーのバランスを取るために比較演算子が必要です。 – Joe
はい、私はバケット内の木について話しています(つまり、スプレーツリー) – Martin