objective c 違い Cocoa Touchは検索ツリーデータ構造を持っていますか?




木構造 (4)

これはCocoa Touchではありませんが、GNU Objective-C コレクションライブラリには、 Red-Black TreeとAbstract Binary Tree 、およびその他の多くのツリー以外のコレクションがあります。

私はこれをGoogleで調べ、SDKのドキュメントのCollectionsの項目を読んでいましたが、何も起こりませんでした。 iOS SDKには、BST(その変種のうちのどれか)の実装が用意されていますか?

非常に基本的なものが主要な開発プラットフォームから欠けていることは奇妙に思えます。 彼らのハッシュ実装はまさしくその魔法ですか? それとも、開発者は誰も注文があるものに対して挿入/削除を行うつもりはないと仮定していますか?

私は、 NSSetを今のところ使用することができます。私の大部分(私自身も含む)が、アクセス時間を保証する必要のあるiOS上での大量の計算で実際には何も書いていないのですが。


ファイルに.mm拡張子を付ける場合は、C ++標準ライブラリのstd::setを使用できます(Objective-C ++モード)。


CoreFoundationにはCFBinaryHeap型があります。 Obj-Cラッパーはありませんが、ちょっとしたCが誰にも害を及ぼすことはありません。


CFBinaryHeapは非常に有望で便利に思えますが、実際にはバイナリ検索ツリーではなくheapため、必ずしも望んでいるものとは異なる場合がありheap 。 それらは似ていますが、同じではないので、私はCore FoundationのCFTreeクラスがもう少し良いかもしれないように感じます。 これがCFTreeクラスリファレンスからの説明です。

CFTreeを使用して、階層構造の情報を表すツリー構造を作成します。 このような構造では、各ツリーノードは親ツリーを1つだけ持ち(親を持たないルートツリーを除く)、複数の子を持つことができます。

Cに慣れていない場合(Core FoundationはCであり、Objective-Cではありません)、CFTreeのObjective-CラッパーであるJKPTreeライブラリを使用できます。 hereダウンロードできます。

更新:

私はCHDataStructuresと呼ばれる別のライブラリを見つけました。これはさまざまなデータ構造の作成を単純化します。 これは以下のデータ構造(および他の多くのリストにないもの)をサポートします。

  • AVLツリー
  • 抽象二分探索ツリー
  • アンダーソンツリー
  • リンクリスト
  • 検索ツリー
  • 赤黒の木
  • アンバランスツリー
  • キュー
  • ヒープ

    CHDataStructuresはhereダウンロードできます。





binary-search-tree