Documentation
¶
Overview ¶
Package tree implements in-memory ordered maps. [_OMap][K, V] is suitable for ordered types K, while Map[K, V] supports arbitrary keys and comparison functions.
Index ¶
- type Map
- func (m *Map[K, V]) Above(lo K) Range[K, V]
- func (m *Map[K, V]) All() iter.Seq2[K, V]
- func (m *Map[K, V]) At(key K) V
- func (m *Map[K, V]) Backward() iter.Seq2[K, V]
- func (m *Map[K, V]) Below(hi K) Range[K, V]
- func (m *Map[K, V]) Clear() bool
- func (m *Map[K, V]) Clone() *Map[K, V]
- func (m *Map[K, V]) Contains(key K) bool
- func (m *Map[K, V]) ContainsAll(keys iter.Seq[K]) bool
- func (m *Map[K, V]) Delete(key K) (V, bool)
- func (m *Map[K, V]) DeleteAll(keys iter.Seq[K]) bool
- func (m *Map[K, V]) From(lo K) Range[K, V]
- func (m *Map[K, V]) Get(key K) (V, bool)
- func (m *Map[K, V]) Index(key K) int
- func (m *Map[K, V]) Keys() iter.Seq[K]
- func (m *Map[K, V]) Len() int
- func (m *Map[K, V]) Max() (K, V, bool)
- func (m *Map[K, V]) Min() (K, V, bool)
- func (m *Map[K, V]) Nth(i int) (K, V)
- func (m *Map[K, V]) Set(key K, val V) (old V, added bool)
- func (m *Map[K, V]) SetAll(seq iter.Seq2[K, V]) bool
- func (m *Map[K, V]) String() string
- func (m *Map[K, V]) To(hi K) Range[K, V]
- func (m *Map[K, V]) Values() iter.Seq[V]
- type ORange
- func (r ORange[K, V]) Above(lo K) ORange[K, V]
- func (r ORange[K, V]) All() iter.Seq2[K, V]
- func (r ORange[K, V]) Backward() iter.Seq2[K, V]
- func (r ORange[K, V]) Below(hi K) ORange[K, V]
- func (r ORange[K, V]) Clear()
- func (r ORange[K, V]) Clone() *_OMap[K, V]
- func (r ORange[K, V]) From(lo K) ORange[K, V]
- func (r ORange[K, V]) Index(key K) int
- func (r ORange[K, V]) Keys() iter.Seq[K]
- func (r ORange[K, V]) Len() int
- func (r ORange[K, V]) Max() (K, V, bool)
- func (r ORange[K, V]) Min() (K, V, bool)
- func (r ORange[K, V]) Nth(i int) (K, V)
- func (r ORange[K, V]) To(hi K) ORange[K, V]
- func (r ORange[K, V]) Values() iter.Seq[V]
- type Range
- func (r Range[K, V]) Above(lo K) Range[K, V]
- func (r Range[K, V]) All() iter.Seq2[K, V]
- func (r Range[K, V]) Backward() iter.Seq2[K, V]
- func (r Range[K, V]) Below(hi K) Range[K, V]
- func (r Range[K, V]) Clear()
- func (r Range[K, V]) Clone() *Map[K, V]
- func (r Range[K, V]) From(lo K) Range[K, V]
- func (r Range[K, V]) Index(key K) int
- func (r Range[K, V]) Keys() iter.Seq[K]
- func (r Range[K, V]) Len() int
- func (r Range[K, V]) Max() (K, V, bool)
- func (r Range[K, V]) Min() (K, V, bool)
- func (r Range[K, V]) Nth(i int) (K, V)
- func (r Range[K, V]) To(hi K) Range[K, V]
- func (r Range[K, V]) Values() iter.Seq[V]
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Map ¶
type Map[K, V any] struct { // contains filtered or unexported fields }
A Map is a map[K]V ordered according to an arbitrary comparison function. The zero value of a Map is not meaningful since it has no comparison function. Use NewMap to create a Map. A nil *Map, like a nil Go map, can be read but not written and contains no entries.
func (*Map[K, V]) Above ¶
Above returns an Range with lower bound lo, exclusive, and no upper bound.
func (*Map[K, V]) All ¶
All returns an iterator over the map m from smallest to largest key. See [_OMap.All] for the guarantee provided if m is modified during the iteration.
Example ¶
package main
import (
"cmp"
"fmt"
"github.com/jba/omap/tree"
)
func main() {
m := tree.NewMap[int, string](cmp.Compare)
m.Set(1, "one")
m.Set(2, "two")
m.Set(3, "three")
for k, v := range m.All() {
fmt.Println(k, v)
}
}
Output: 1 one 2 two 3 three
func (*Map[K, V]) At ¶
func (m *Map[K, V]) At(key K) V
At returns the value of m[key], or the zero value if key is not present.
func (*Map[K, V]) Backward ¶
Backward returns an iterator over the map m from largest to smallest key. See [_OMap.All] for the guarantee provided if m is modified during the iteration.
func (*Map[K, V]) Below ¶
Below returns an Range with upper bound hi, exclusive, and no lower bound.
Example ¶
package main
import (
"cmp"
"fmt"
"github.com/jba/omap/tree"
)
func main() {
m := tree.NewMap[int, string](cmp.Compare)
m.Set(1, "one")
m.Set(2, "two")
m.Set(3, "three")
for k, v := range m.Above(1).Below(3).All() {
fmt.Println(k, v)
}
}
Output: 2 two
func (*Map[K, V]) Clear ¶
Clear removes all entries from the map. It reports whether the size changed.
func (*Map[K, V]) Contains ¶ added in v0.4.0
Contains reports whether the map contains an entry with the given key.
func (*Map[K, V]) ContainsAll ¶ added in v0.4.0
ContainsAll reports whether the map contains an entry for each key in the sequence.
func (*Map[K, V]) Delete ¶
Delete removes the entry with the given key, if present. It reports whether the map changed, and returns the previous value, if any.
func (*Map[K, V]) DeleteAll ¶ added in v0.4.0
DeleteAll removes all the entries whose keys are in the sequence. It reports whether the map changed.
func (*Map[K, V]) From ¶
From returns an Range with lower bound lo, inclusive, and no upper bound.
Example ¶
package main
import (
"cmp"
"fmt"
"github.com/jba/omap/tree"
)
func main() {
m := tree.NewMap[int, string](cmp.Compare)
m.Set(1, "one")
m.Set(2, "two")
m.Set(3, "three")
for k, v := range m.From(2).All() {
fmt.Println(k, v)
}
}
Output: 2 two 3 three
func (*Map[K, V]) Keys ¶ added in v0.4.0
Keys returns an iterator over the keys in m from smallest to largest. See [_OMap.All] for the guarantee provided if m is modified during the iteration.
func (*Map[K, V]) Max ¶
Max returns the maximum key in m, is value, and true. If m is empty, the third return value is false.
func (*Map[K, V]) Min ¶
Min returns the minimum key in m, its value, and true. If m is empty, the third return value is false.
func (*Map[K, V]) Nth ¶
Nth returns the key and value at index i. It panics if i < 0 or i >= m.Len().
func (*Map[K, V]) Set ¶ added in v0.3.0
Set sets m[key] = val. If the entry was present, Set returns the former value and false. Otherwise it returns the zero value and true.
func (*Map[K, V]) SetAll ¶ added in v0.4.0
SetAll calls Set(k, v) for each key/value pair in the sequence. It reports whether the number of map entries increased.
func (*Map[K, V]) String ¶ added in v0.4.0
String returns a string representation of m in the form "{k1: v1, k2: v2}".
type ORange ¶ added in v0.3.0
A ORange is a subsequence of keys in an [_OMap].
func (ORange[K, V]) Above ¶ added in v0.4.0
Above returns an ORange with lower bound lo, exclusive and the same upper bound as r.
func (ORange[K, V]) All ¶ added in v0.3.0
All returns an iterator over r's underlying map from smallest to largest key in r. See [_OMap.All] for the guarantee provided if m is modified during the iteration.
func (ORange[K, V]) Backward ¶ added in v0.3.0
Backward returns an iterator over r's underlying map from largest to smallest key in r. See [_OMap.All] for the guarantee provided if m is modified during the iteration.
func (ORange[K, V]) Below ¶ added in v0.3.0
Below returns an ORange with upper bound hi, exclusive and the same lower bound as r.
func (ORange[K, V]) Clear ¶ added in v0.3.0
func (r ORange[K, V]) Clear()
Clear deletes all the entries in r from r's underlying map.
func (ORange[K, V]) Clone ¶ added in v0.3.0
func (r ORange[K, V]) Clone() *_OMap[K, V]
Clone returns a new OMap containing only the keys in r.
func (ORange[K, V]) From ¶ added in v0.4.0
From returns an ORange with lower bound lo, inclusive and the same upper bound as r.
func (ORange[K, V]) Index ¶ added in v0.3.0
Index returns the index of key within r, or -1 if key is not present or not in bounds.
func (ORange[K, V]) Keys ¶ added in v0.4.0
Keys returns an iterator over the keys in r from smallest to largest. See [_OMap.All] for the guarantee provided if m is modified during the iteration.
func (ORange[K, V]) Max ¶ added in v0.3.0
Max returns the maximum key from r's underlying map that is in r, its value, and true. If m is empty, the third return value is false.
func (ORange[K, V]) Min ¶ added in v0.3.0
Min returns the minimum key from r's underlying map that is in r, its value, and true. If m is empty, the third return value is false.
func (ORange[K, V]) Nth ¶ added in v0.3.0
Nth returns the key and value at index i within r. It panics if i < 0 or i >= r.Len().
type Range ¶
type Range[K, V any] struct { // contains filtered or unexported fields }
A Range is a subsequence of keys in a Map.
func (Range[K, V]) Above ¶ added in v0.4.0
Above returns a Range with lower bound lo, exclusive and the same upper bound as r.
func (Range[K, V]) All ¶
All returns an iterator over r's underlying map from smallest to largest key in r. See [_OMap.All] for the guarantee provided if m is modified during the iteration.
func (Range[K, V]) Backward ¶
Backward returns an iterator over r's underlying map from largest to smallest key in r. See [_OMap.All] for the guarantee provided if m is modified during the iteration.
func (Range[K, V]) Below ¶
Below returns a Range with upper bound hi, exclusive and the same lower bound as r.
func (Range[K, V]) Clear ¶
func (r Range[K, V]) Clear()
Clear deletes all the entries in r from r's underlying map.
func (Range[K, V]) From ¶ added in v0.4.0
From returns a Range with lower bound lo, inclusive and the same upper bound as r.
func (Range[K, V]) Index ¶
Index returns the index of key within r, or -1 if key is not present or not in bounds.
func (Range[K, V]) Keys ¶ added in v0.4.0
Keys returns an iterator over the keys in r from smallest to largest. See [_OMap.All] for the guarantee provided if m is modified during the iteration.
func (Range[K, V]) Max ¶
Max returns the maximum key from r's underlying map that is in r, its value, and true. If m is empty, the third return value is false.
func (Range[K, V]) Min ¶
Min returns the minimum key from r's underlying map that is in r, its value, and true. If m is empty, the third return value is false.
func (Range[K, V]) Nth ¶
Nth returns the key and value at index i within r. It panics if i < 0 or i >= r.Len().