のコードは次のassoc
とおりです。
(def assoc
(fn assoc
([map key val] (. clojure.lang.RT (assoc map key val)))))
とはどういう意味
clojure.lang.RT
ですか?assoc
ベクター/マップでの呼び出しの複雑さは?によって作成された構造にアクセスすることの複雑さは
assoc
?
のコードは次のassoc
とおりです。
(def assoc
(fn assoc
([map key val] (. clojure.lang.RT (assoc map key val)))))
とはどういう意味clojure.lang.RT
ですか?
assoc
ベクター/マップでの呼び出しの複雑さは?
によって作成された構造にアクセスすることの複雑さはassoc
?
clojure.lang.RT
メインの Clojure RunTime クラスです。言語のコアを構成するほとんどのメソッドが含まれています。
assoc
ベクトルとマップを含むすべての連想データ構造に対して O(1) です。array-map
最初のいくつかのアイテムに対して線形で開始し、それ自体を a に昇格させて、hash-map
O(1) にもします。もちろん、必要に応じて、O(1) 以外のものを使用して連想インターフェイスを実装することもできます。
技術的には、別のマップを呼び出して作成されたマップまたはベクター内のアイテムのアクセス時間assoc
は O(log32 N) です。これらのデータ構造には最大 2^32 アイテムのサイズの上限があるため、実質的に一定の時間である最大ツリー深度は 6 になります。
Clojure の連想データ構造は、空間ではすべて O(nLog n) です (ツリーであるため)。