ネタ元 → hash_mapの使い方
そーなの、VC++についてくるhash_set, hash_map の類はインタフェースがちょっとばかし特殊。
そのワケはシノニムの扱いなのです。
同じハッシュ値をとる要素の群をシノニムってゆーです。
ハッシュ表はハッシュ値が同じシノニムの集合を扱わにゃならん。
STLportのhash_xxx実装ではシノニム集合を(配列/リンクリストなどの)リニアな
コンテナに納め、リニアサーチで要素を特定します。比較オブジェクトは
等値比較ができればいい。
対してDinkumwareのOEMであるVC++の標準C++ライブラリではhash_xxx名部
のシノニムを二進木に格納し、バイナリサーチで目的の要素を特定します。
なので比較オブジェクトには要素の大小を知れるものを与えるです。
STL/CLRの cliext::hash_xxx インタフェースはそれを引きずったカタチになってんですね。