gost v0.7.2

https://github.com/myyrakle/gost/releases/tag/v0.7.2
https://pkg.go.dev/github.com/myyrakle/gost
์ด๋ฒˆ์—๋Š” ์ข€ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.



BTreeMap[K,V]

์ž๋ฃŒ๊ตฌ์กฐ BTreeMap์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.
B-Tree ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋œ ๋งต์ด๊ณ , ์ฐจ์ˆ˜๋Š” Rust๋ฅผ ๊ณ„์Šนํ•ด์„œ 12๋‹ค. ์–ด๋ จํžˆ ๋งž์ถฐ์„œ ์ •ํ•œ๊ฑฐ๊ฒ ์ง€...

package main

import (
	"fmt"

	gost "github.com/myyrakle/gost"
)

func main() {
	tree := gost.BTreeMap[gost.String, gost.I32]{}
	tree.Insert(gost.String("asdf"), gost.I32(3))
	tree.Insert(gost.String("qwer"), gost.I32(4))
	tree.Insert(gost.String("zxcv"), gost.I32(5))
	tree.Insert(gost.String("uiop"), gost.I32(6))
	tree.Insert(gost.String("hjkl"), gost.I32(7))
	tree.Insert(gost.String("bnm,"), gost.I32(8))
	tree.Insert(gost.String("yuiop"), gost.I32(9))
	tree.Insert(gost.String("asdfg"), gost.I32(10))
	tree.Insert(gost.String("qwert"), gost.I32(11))
	tree.Insert(gost.String("zxcvb"), gost.I32(12))
	tree.Insert(gost.String("uiop["), gost.I32(13))
	tree.Insert(gost.String("hjkl;"), gost.I32(14))
	tree.Insert(gost.String("bnm,."), gost.I32(15))
	tree.Insert(gost.String("yuiop["), gost.I32(16))
	tree.Insert(gost.String("asdfgh"), gost.I32(17))
	tree.Insert(gost.String("asdfgh"), gost.I32(99999))

	fmt.Println(tree.ContainsKey(gost.String("asdf")))
	fmt.Println(tree.ContainsKey(gost.String("not_found")))

	tree.Remove(gost.String("asdf"))
	fmt.Println(tree.ContainsKey(gost.String("asdf")))

	gost.Println("{}", tree)
}




BTreeSet[K]

BTree ๊ธฐ๋ฐ˜์˜ ์ง‘ํ•ฉ ํƒ€์ž…์ด๋‹ค.
์ง‘ํ•ฉ ์—ฐ์‚ฐ์€ ์•„์ง ์—†๊ณ , ๊ตฌํ˜„ ์˜ˆ์ •์ด๋‹ค.

package main

import (
	"fmt"

	gost "github.com/myyrakle/gost"
)

func main() {
	set := gost.BTreeSet[gost.I32]{}
	set.Insert(gost.I32(3))
	set.Insert(gost.I32(4))
	set.Insert(gost.I32(5))
	set.Insert(gost.I32(6))
	set.Insert(gost.I32(7))

	set.Insert(gost.I32(8))
	set.Insert(gost.I32(9))
	set.Insert(gost.I32(10))
	set.Insert(gost.I32(11))
	set.Insert(gost.I32(12))

	set.Insert(gost.I32(13))
	set.Insert(gost.I32(14))
	set.Insert(gost.I32(15))

	fmt.Println(set.Contains(gost.I32(33)))
	fmt.Println(set.Contains(gost.I32(3)))

	gost.Println("{}", set)
}




HashSet[K]

ํ•ด์‹œ์…‹์ด๋‹ค.

package main

import (
	"fmt"

	gost "github.com/myyrakle/gost"
)

func main() {
	set := gost.HashSetNew[gost.I32\]()
	set.Insert(gost.I32(3))
	set.Insert(gost.I32(4))
	set.Insert(gost.I32(5))
	set.Insert(gost.I32(6))
	set.Insert(gost.I32(7))

	set.Insert(gost.I32(8))
	set.Insert(gost.I32(9))
	set.Insert(gost.I32(10))
	set.Insert(gost.I32(11))
	set.Insert(gost.I32(12))

	set.Insert(gost.I32(13))
	set.Insert(gost.I32(14))
	set.Insert(gost.I32(15))

	fmt.Println(set.Contains(gost.I32(33)))
	fmt.Println(set.Contains(gost.I32(3)))

	gost.Println("{}", set)
}

์ด์ œ ์ปฌ๋ ‰์…˜์€ VecDeque์™€ Heap๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.