libpasc-algorithmsは、一般的なデータ構造とアルゴリズムのDelphiおよびObject Pascalライブラリです。ライブラリはC-Algorithmsリポジトリに基づいており、Pascal言語とそれで利用可能なテンプレートシステムに適合したコンテナのセットです。
ライブラリがテストされています
ソースを取得し、ソースディレクトリをプロジェクト検索パスに追加します。 FPCの場合、ソースディレクトリをFPC.CFGファイルに追加します。
リポジトリgit clone https://github.com/isemenkov/libpasc-algorithmsをクローンします。
使用するユニットをuses句に追加します。
テストフレームワークは、次の成分で構成されています。
unit-testsディレクトリにあるテストランナープロジェクト。TarrayListは、サイズが自動的に増加するTの一般的なアレイです。
uses
container.arraylist, utils.functor;
type
generic TArrayList<T, BinaryCompareFunctor> = classBinaryCompareFunctorは、utils.functor.tbinaryfunctorインターフェイスに基づいており、2つの配列項目を比較するために使用されます。並べ替えおよび検索機能に必要です。
詳細については、Wikiページをご覧ください。
TmultiArrayは、自動的にサイズが増加するTのジェネリック配列です。
uses
container.multiarray, utils.functor;
type
generic TMultiArray<T, BinaryCompareFunctor> = classBinaryCompareFunctorは、utils.functor.tbinaryfunctorインターフェイスに基づいており、2つの配列項目を比較するために使用されます。並べ替えおよび検索機能に必要です。
詳細については、Wikiページをご覧ください。
TsortedArrayは、ソートされた順序でその要素を保存する自動的にサイズ変更配列です。ユーザー定義のファンチャーは、ソート順序を決定します。 tsortedArrayのすべての操作は、ソートされたプロパティを維持します。ほとんどの操作はO(n)時間で行われますが、検索はO(log n)の最悪の場合で行うことができます。
uses
container.sortedarray, utils.functor;
type
generic TSortedArray<T, BinaryCompareFunctor> = classBinaryCompareFunctorは、utils.functor.tbinaryfunctorインターフェイスに基づいており、2つの配列項目を比較するために使用されます。検索機能に必要です。
詳細については、Wikiページをご覧ください。
二重にリンクされたリストには、価値のコレクションが保存されます。リスト内の各エントリには、次のエントリへのリンクと前のエントリが含まれています。したがって、リスト内のエントリをいずれかの方向に反復することができます。
uses
container.list, utils.functor;
type
generic TList<T, BinaryCompareFunctor> = classBinaryCompareFunctorは、utils.functor.tbinaryfunctorインターフェイスに基づいており、2つのリスト項目を比較するために使用されます。並べ替えおよび検索機能に必要です。
詳細については、Wikiページをご覧ください。
AVLツリー構造は、ノードのコレクションを保存するバランスの取れたバイナリツリーです。各ノードには、キーとそれに関連付けられた値があります。ノードは、キーの順序に基づいてツリー内でソートされます。ツリーの変更は、ツリーが常にバランスを保つように構築されます(ツリーの両側に常にほぼ等しい数のノードがあります)。
バランスの取れたバイナリツリーにはいくつかの用途があります。それらは、マッピング(そのキーに基づいた値を検索)として、または常に注文されているキーのセットとして使用できます。
uses
container.avltree;
type
generic TAvlTree<K, V, KeyBinaryCompareFunctor> = classKeyBinaryCompareFunctorは、utils.functor.tbinaryfunctorインターフェイスに基づいており、2つのキーを比較するために使用されます。
詳細については、Wikiページをご覧ください。
ハッシュテーブルには、キーによってアドレス指定できる値のセットが保存されます。キーを考えると、対応する値をすばやく調べることができます。
uses
container.hashtable, utils.functor;
type
generic THashTable<K, V, KeyBinaryCompareFunctor> = classKeyBinaryCompareFunctorは、utils.functor.tbinaryfunctorインターフェイスに基づいており、2つのキーを比較するために使用されます。
詳細については、Wikiページをご覧ください。
マルチハッシュテーブルには、キーがアドレス指定できる値のセットが保存されます。キーを考えると、対応する値をすばやく調べることができます。
uses
container.hashtable, container.multihash, utils.functor;
type
generic TMultiHash<K, V, KeyBinaryCompareFunctor, ValueBinaryCompareFunctor> = classKeyBinaryCompareFunctorおよびValueBinaryCompareFunctorは、utils.functor.tbinaryfunctorインターフェイスに基づいており、2つのキーを比較するために使用されます。
詳細については、Wikiページをご覧ください。
セットは価値のコレクションを保存します。各値は、セットに1回しか存在できません。
uses
container.orderedset, utils.functor;
type
generic TOrderedSet<V, BinaryCompareFunctor> = classBinaryCompareFunctorはutils.functor.tbinaryfunctorインターフェイスに基づいており、2つの項目を比較するために使用されます。
詳細については、Wikiページをご覧ください。
ヒープタイプ。優先度が最も低い値は、ヒープの上部に保存され、最初に返されます。
uses
container.binaryheap, utils.functor;
type
generic TMinBinaryHeap<V, BinaryCompareFunctor> = classBinaryCompareFunctorはutils.functor.tbinaryfunctorインターフェイスに基づいており、2つの項目を比較するために使用されます。
詳細については、Wikiページをご覧ください。
ヒープタイプ。最優先事項の値は、ヒープの上部に保存され、最初に返されます。
uses
container.binaryheap, utils.functor;
type
generic TMaxBinaryHeap<V, BinaryCompareFunctor> = classBinaryCompareFunctorはutils.functor.tbinaryfunctorインターフェイスに基づいており、2つの項目を比較するために使用されます。
詳細については、Wikiページをご覧ください。
Trieは、文字列から値への高速マッピングを提供するデータ構造です。
uses
container.trie;
type
generic TTrie<V> = class詳細については、Wikiページをご覧ください。
ダブルエンドのキューは、値のリストを順番に保存します。新しい値を追加して、キューの両端から削除できます。
uses
container.queue;
type
generic TQueue<T> = class詳細については、Wikiページをご覧ください。
TmemoryBufferは、任意のサイズのメモリブロックを保存するための有用なデータ構造です。オブジェクトが破壊されたときのメモリブロックの削除を保証します。 wxwidgets wxmemorybuffer apiインターフェイスhttps://docs.wxwidgets.org/trunk/classwx_memory_buffer.htmlに基づくこのクラス。
uses
container.memorybuffer;
type
TMemoryBuffer = class詳細については、Wikiページをご覧ください。