Startseite › Datentypen › H-Lib-Container Hilfe zum PBXB64-Compiler

Native H-Lib-Container - Beispiele

Codebeispiele, die die Verwendung jedes nativen H-Lib-Containertyps veranschaulichen.

Kategorie: H-Lib-Container

Beschreibung

Codebeispiele, die die Verwendung jedes nativen H-Lib-Containertyps veranschaulichen.

LnArr (LONG-Array)

FUNCTION PBMAIN() AS LONG
  LOCAL q AS LnArr
  LOCAL i AS LONG
  LOCAL n AS QUAD

  q.New
  q.Push 10
  q.Push 20
  q.Push 30

  n = q.Count           ' n = 3
  i = q.Get(2)          ' i = 20 (1-based PB index)
  q.Ins 1, 15           ' insert 15 at index 1
  q.Sort                ' result: 10, 15, 20, 30
  q.Del 0               ' remove first element
  i = q.Pop             ' i = 30, q now has [15, 20]
  q.Final               ' auto-cleanup
END FUNCTION

LnStk (LONG Stack)

FUNCTION PBMAIN() AS LONG
  LOCAL s AS LnStk
  LOCAL v AS LONG

  s.Push 100
  s.Push 200
  s.Push 300

  v = s.Peek            ' v = 300
  v = s.Pop             ' v = 300, stack now [100, 200]
  v = s.Pop             ' v = 200
  v = s.Pop             ' v = 100
  ' s.Count = 0
  s.Final
END FUNCTION

LnQue (LANGE Warteschlange)

FUNCTION PBMAIN() AS LONG
  LOCAL q AS LnQue
  LOCAL v AS LONG

  q.Push 10             ' enqueue
  q.Push 20
  q.Push 30

  v = q.Front           ' v = 10
  v = q.Back            ' v = 30
  v = q.Pop             ' v = 10, queue now [20, 30]
  v = q.Pop             ' v = 20
  v = q.Pop             ' v = 30
  q.Final
END FUNCTION

LnLst (LANGE Liste)

FUNCTION PBMAIN() AS LONG
  LOCAL lst AS LnLst
  LOCAL node AS QUAD
  LOCAL v AS LONG

  lst.Add 10            ' list: [10]
  lst.Add 20            ' list: [10, 20]
  lst.AddHead 5         ' list: [5, 10, 20]
  lst.InsAfter 5, 7     ' insert 7 after value 5

  node = lst.GetHead    ' first node
  v = lst.Value(node)   ' v = 5
  node = lst.Next(node) ' advance to next node
  v = lst.Value(node)   ' v = 7

  lst.Remove(node)      ' remove node with value 7
  lst.Final
END FUNCTION

SsStr (ANSI String Builder)

FUNCTION PBMAIN() AS LONG
  LOCAL sb AS SsStr
  LOCAL s AS STRING
  LOCAL n AS QUAD

  sb.Append "Hello"
  sb.Append " World"
  n = sb.Length          ' n = 11
  s = sb.ToString        ' s = "Hello World"

  sb.Ins 6, "PBXB64 "   ' insert at position 6 (1-based)
  s = sb.ToString        ' s = "Hello PBXB64 World"

  sb.Replace "World", "Containers"
  s = sb.ToString        ' s = "Hello PBXB64 Containers"

  sb.ToUpper
  s = sb.ToString        ' s = "HELLO PBXB64 CONTAINERS"
  sb.Final
END FUNCTION

Ln2D (LANGES 2D-Array)

FUNCTION PBMAIN() AS LONG
  LOCAL m AS Ln2D
  LOCAL v AS LONG

  m.Resize 3, 4         ' 3 rows, 4 columns
  m.Set 1, 1, 42        ' first row and column use index 1
  v = m.Get(1, 1)       ' v = 42

  ' Rows and Cols properties
  LOCAL r, c AS QUAD
  r = m.Rows             ' r = 3
  c = m.Cols             ' c = 4

  ' Extract a row as 1D array
  LOCAL rowArr AS LnArr
  rowArr = m.GetRow(1)
  m.Final
  rowArr.Final
END FUNCTION

LnLnHsh (LONG-to-LONG-Hash-Tabelle)

FUNCTION PBMAIN() AS LONG
  LOCAL h AS LnLnHsh
  LOCAL v AS LONG
  LOCAL found AS LONG

  h.Put 1, 100
  h.Put 2, 200
  h.Put 3, 300

  v = h.Get(2)           ' v = 200
  found = h.Contains(4)  ' found = 0 (false)

  h.Remove 1             ' remove key 1

  ' Enumerate keys
  LOCAL keys AS LnArr
  keys = h.Keys          ' keys = [2, 3]
  h.Final
  keys.Final
END FUNCTION

LnLnTre (LONG-to-LONG AVL-Baum)

FUNCTION PBMAIN() AS LONG
  LOCAL t AS LnLnTre
  LOCAL v AS LONG
  LOCAL k AS LONG

  t.Put 50, 500
  t.Put 30, 300
  t.Put 70, 700
  t.Put 20, 200
  t.Put 40, 400

  k = t.Min              ' k = 20 (smallest key)
  k = t.Max              ' k = 70 (largest key)
  k = t.Floor(35)        ' k = 30 (floor of 35)
  k = t.Ceil(35)         ' k = 40 (ceil of 35)

  v = t.Get(30)          ' v = 300

  ' Sorted keys
  LOCAL keys AS LnArr
  keys = t.Keys          ' keys = [20, 30, 40, 50, 70]
  t.Final
  keys.Final
END FUNCTION

LNHEAP (Heap / Prioritätswarteschlange)

FUNCTION PBMAIN() AS LONG
  LOCAL h AS LNHEAP
  LOCAL v AS LONG

  h = h.New
  h.Push 30
  h.Push 10
  h.Push 20

  v = h.Peek      ' v = 10 (smallest)
  v = h.Pop       ' v = 10, heap now [20, 30]
  v = h.Pop       ' v = 20
  h.Final
END FUNCTION

LNDEQUE (Doppelendige Warteschlange)

FUNCTION PBMAIN() AS LONG
  LOCAL d AS LNDEQUE
  LOCAL v AS LONG

  d = d.New
  d.PushBack 10
  d.PushFront 5
  d.PushBack 15

  v = d.PeekFront  ' v = 5
  v = d.PeekBack   ' v = 15
  v = d.PopFront   ' v = 5
  v = d.PopBack    ' v = 15
  d.Final
END FUNCTION

LNSET (sortierter eindeutiger Satz)

FUNCTION PBMAIN() AS LONG
  LOCAL s AS LNSET
  LOCAL v AS LONG

  s = s.New
  s.Add 3
  s.Add 1
  s.Add 2
  s.Add 3        ' duplicate ignored

  v = s.Count     ' v = 3
  v = s.First     ' v = 1
  v = s.Next 1    ' v = 2
  v = s.Contains 2 ' non-zero
  s.Final
END FUNCTION

LNGRAPH (Ungerichteter Graph)

FUNCTION PBMAIN() AS LONG
  LOCAL g AS LNGRAPH
  LOCAL n AS LONG
  LOCAL neighbors AS LNARR

  g = g.New
  g.AddNode 1
  g.AddNode 2
  g.AddNode 3
  g.AddEdge 1, 2
  g.AddEdge 2, 3

  n = g.Count       ' n = 3
  n = g.HasEdge(1, 2) ' non-zero

  neighbors = g.Neighbors 2  ' neighbors = [1, 3]
  g.Final
  neighbors.Final
END FUNCTION

LNMULTISET (Beutel mit Multiplizität)

FUNCTION PBMAIN() AS LONG
  LOCAL m AS LNMULTISET
  LOCAL v AS LONG

  m = m.New
  m.Add 5
  m.Add 5
  m.Add 3

  v = m.Count         ' v = 3 (total elements)
  v = m.UniqueCount   ' v = 2 (distinct values)
  v = m.Multiplicity 5 ' v = 2
  m.Remove 5          ' multiplicity becomes 1
  m.RemoveAll 5       ' completely removed
  m.Final
END FUNCTION

LNUNIONFIND (Disjunkte Menge)

FUNCTION PBMAIN() AS LONG
  LOCAL uf AS LNUNIONFIND
  LOCAL v AS LONG

  uf = uf.New
  uf.MakeSet 1
  uf.MakeSet 2
  uf.MakeSet 3

  v = uf.SameSet(1, 2) ' v = 0 (false)
  uf.Union 1, 2
  v = uf.SameSet(1, 2) ' v = non-zero (true)
  v = uf.Components    ' v = 2 (sets: {1,2}, {3})
  uf.Final
END FUNCTION

LNLRU (LRU-Cache)

FUNCTION PBMAIN() AS LONG
  LOCAL cache AS LNLRU
  LOCAL v AS LONG

  cache = cache.New 3     ' capacity = 3
  cache.Put 1, 100
  cache.Put 2, 200
  cache.Put 3, 300
  cache.Put 4, 400       ' evicts key 1 (oldest)

  v = cache.Get 2        ' v = 200
  v = cache.Contains 1   ' v = 0 (evicted)
  v = cache.Count        ' v = 3
  cache.Final
END FUNCTION

LNRING (Ringpuffer)

FUNCTION PBMAIN() AS LONG
  LOCAL r AS LNRING
  LOCAL v AS LONG

  r = r.New 3            ' capacity = 3
  r.Push 10
  r.Push 20
  r.Push 30
  r.Push 40             ' overwrites 10

  v = r.Peek            ' v = 20 (oldest remaining)
  v = r.Pop             ' v = 20
  v = r.Full            ' v = 0 (not full)
  r.Final
END FUNCTION

LNSKIPLIST (Probabilistisch geordneter Satz)

FUNCTION PBMAIN() AS LONG
  LOCAL sl AS LNSKIPLIST
  LOCAL v AS LONG

  sl = sl.New
  sl.Add 50
  sl.Add 30
  sl.Add 70

  v = sl.First      ' v = 30
  v = sl.Next 30    ' v = 50
  v = sl.Contains 70 ' non-zero
  sl.Final
END FUNCTION

LNBPTREE (B+ Baum)

FUNCTION PBMAIN() AS LONG
  LOCAL t AS LNBPTREE
  LOCAL v AS LONG
  LOCAL arr AS LNARR

  t = t.New 4          ' order = 4
  t.Add 10
  t.Add 20
  t.Add 30
  t.Add 40
  t.Add 50

  v = t.First          ' v = 10
  arr = t.Range 15, 45 ' arr = [20, 30, 40]
  t.Final
  arr.Final
END FUNCTION

LNQUAD (Quadtree)

FUNCTION PBMAIN() AS LONG
  LOCAL q AS LNQUAD
  LOCAL ids AS LNARR
  LOCAL n AS LONG

  q = q.New 8          ' max depth = 8
  q.Insert 1, 0, 0, 10, 10
  q.Insert 2, 5, 5, 15, 15
  q.Insert 3, 20, 20, 30, 30

  ids = q.Query 4, 4, 12, 12  ' ids = [1, 2] (overlapping boxes)
  n = q.Count            ' n = 3
  q.Final
  ids.Final
END FUNCTION

LNBLOOM (Bloom-Filter)

FUNCTION PBMAIN() AS LONG
  LOCAL b AS LNBLOOM
  LOCAL v AS LONG

  b = b.New 1000, 0.01  ' capacity 1000, 1% false-positive rate
  b.Add 42
  b.Add 99
  b.Add 123

  v = b.Contains 42     ' non-zero (definitely present)
  v = b.Contains 999    ' probably 0 (not added)
  v = b.ErrorRate       ' v = 0.01
  b.Final
END FUNCTION

LNSAFE (Thread-Safe Stack)

FUNCTION PBMAIN() AS LONG
  LOCAL s AS LNSAFE
  LOCAL v AS LONG

  s = s.New
  s.Push 100
  s.Push 200

  v = s.Peek            ' v = 200
  v = s.Pop             ' v = 200
  v = s.Count           ' v = 1
  s.Final
END FUNCTION

PBXB64-Prüfung

Diese Referenzseite soll durch ein fokussiertes Compile- oder Laufzeitbeispiel belegt sein. Das Beispiel soll Eingaben, erwartete Ausgabe oder Exit-Code und erforderliche Windows-Ressourcen oder Include-Dateien nennen.

Übersichtshinweise

Allgemeine Übersichtsseiten sollten trotzdem sagen, welche Familie gemeint ist, welche konkreten Befehlsseiten die Implementierung tragen und welche Formen nur der Navigation dienen. So bleibt die Seite detailliert genug, ohne so zu tun, als wäre sie eine vollständige Befehlsreferenz.

Zurück zum Befehlsindex

Siehe auch