0

NSMutableSet の要素にランダムにアクセスすることはできないので、リンクされたリストのように実装されているということですか?

つまり、NSMutableArray よりも挿入/削除が高速になりますか?

4

4 に答える 4

5

ソース コードが公開されているので、ご覧ください: CFSet.c。(これは に相当する Core Foundation ですが、NSSet基本的には同じです。) これはハッシュ テーブルです。

NSArrayただし、実際には配列として実装されていないことにも注意してください。ここで実装を確認できます: CFArray.c。少し古くなっていますが (~5 年)、このブログ記事の方が理解しやすいかもしれません。

于 2010-12-11T16:46:14.780 に答える
2

私はObjective-Cプログラマーではありませんが、通常、セットはハッシュテーブルを介して実装されます。ハッシュテーブルは、(適切に実行された場合)挿入、削除、およびルックアップ用にO(1)を生成します。

技術的には、ハッシュは通常O(M)を提供します。ここで、Mはキーのサイズですが、セットの場合は、定数であるキーオブジェクトのIDを使用するだけなので、O(1)に戻ります。

于 2010-12-11T15:31:46.733 に答える
2

いいえ。ハッシュを使用するため、ルックアップ時間が短縮されます。

于 2010-12-11T15:29:31.040 に答える
0

セットは通常、バランスの取れた二分探索木 (赤黒木、avl 木など) で実装されます。

于 2010-12-11T15:26:52.423 に答える