Rubyによる赤黒木ベースのMap実装です
[]=(key, value)
- キーに対応する値を設定(キーが存在する場合は上書き)[](key)
- キーに対応する値を取得(存在しない場合はnil)delete(key)
- キーに対応する要素を削除し、値を返す(存在しない場合はnil)to_h
- Hashオブジェクトに変換merge!(other)
- 他のマップの要素を追加(破壊的)merge(other)
- 他のマップの要素を追加した新しいマップを返すclear
- すべての要素を削除size
- マップ内の要素数を返すempty?
- マップが空かどうかを返すinclude?(key)
- 指定したキーが存在するかどうかを返すeach
- キーと値のペアを順にイテレートkeys
- すべてのキーを配列で返すvalues
- すべての値を配列で返すlower_bound(key)
- key以上の最小のキーを持つノードを返すupper_bound(key)
- keyより大きい最小のキーを持つノードを返すlower_bound_pair(key)
- key以上の最小のキーを持つ[key, value]のペアを返すupper_bound_pair(key)
- keyより大きい最小のキーを持つ[key, value]のペアを返すmin_key
- 最小のキーを返す(空の場合はnil)max_key
- 最大のキーを返す(空の場合はnil)shift
- 最小の要素を削除して[key, value]のペアを返すpop
- 最大の要素を削除して[key, value]のペアを返すだいたいの操作はO(log n)の時間計算量で動作します(nはマップ内の要素数)。