// File: vertex.go // Created Time: 2023-02-18 // Author: Reanon (793584285@qq.com) package pkg // Vertex 顶点类 type Vertex struct { Val int } // NewVertex 顶点构造函数 func NewVertex(val int) Vertex { return Vertex{ Val: val, } } // ValsToVets 将值列表反序列化为顶点列表 func ValsToVets(vals []int) []Vertex { vets := make([]Vertex, len(vals)) for i := 0; i < len(vals); i++ { vets[i] = NewVertex(vals[i]) } return vets } // VetsToVals 将顶点列表序列化为值列表 func VetsToVals(vets []Vertex) []int { vals := make([]int, len(vets)) for i := range vets { vals[i] = vets[i].Val } return vals } // DeleteSliceElms 删除切片指定元素 func DeleteSliceElms[T any](a []T, elms ...T) []T { if len(a) == 0 || len(elms) == 0 { return a } // 先将元素转为 set m := make(map[any]struct{}) for _, v := range elms { m[v] = struct{}{} } // 过滤掉指定元素 res := make([]T, 0, len(a)) for _, v := range a { if _, ok := m[v]; !ok { res = append(res, v) } } return res }