Added unique array data structure - O(1) addition and retrieval (I think)

master
Aadhavan Srinivasan 2 months ago
parent ea17251bf8
commit 8a69ea8cb7

@ -0,0 +1,28 @@
package main
// Unique array data structure
type uniq_arr[T comparable] struct {
backingMap map[T]struct{} // Map is used to check if element exists - Empty structs occupy zero memory
vals []T
}
func new_uniq_arr[T comparable]() uniq_arr[T] {
return uniq_arr[T]{
make(map[T]struct{}),
make([]T, 0),
}
}
func (s *uniq_arr[T]) add(vals ...T) {
for _, item := range vals {
if !s.contains(item) {
s.backingMap[item] = struct{}{}
s.vals = append(s.vals, item)
}
}
return
}
func (s *uniq_arr[T]) contains(val T) bool {
_, ok := s.backingMap[val]
return ok
}
Loading…
Cancel
Save