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はマップ内の要素数)。