7

Racket には双方向のハッシュマップがありますか?

つまり、キーを与えて値を調べるか、値を与えてキーを調べることができるハッシュ マップは一定時間でしょうか? 次のような API があれば幸いです。

#lang racket

(define my-map (bidirectional-hash '(key1 val1) '(key2 val2)))
(bidirectional-hash-ref my-map 'key 'key1) ; => val1
(bidirectional-hash-ref my-map 'val 'val2) ; => key2

記号keyと記号valは、val が与えられてキーを探していること、またはキーが与えられて val を探していることをハッシュ マップに伝えます。どちらの場合も、これを一定の O(1) 時間で実行したいと考えています。

互いに反転した 2 つのハッシュ テーブルを使用することでこれを実現できることはわかっていますが、Racket (または既存のライブラリ) に組み込まれた構造が必要です。

4

1 に答える 1