vec

package
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 28, 2024 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Overview

Index

Examples

Constants

This section is empty.

Variables

View Source
var (
	ErrLenGreaterCap = errors.New("len is too long > length of cap")
)

Functions

This section is empty.

Types

type Vec

type Vec[T any] []T

vec类型

func FromSlicePtr

func FromSlicePtr[T any](ptr *[]T) *Vec[T]

初始化函数, 可以把slice指针转成Vec类型

func New

func New[T any](a ...T) *Vec[T]

初始化一个vec

func WithCapacity

func WithCapacity[T any](capacity int) *Vec[T]

初始化一个vec, 并指定底层的slice 容量

func (*Vec[T]) Append

func (v *Vec[T]) Append(other *Vec[T]) *Vec[T]

添加other类型的vec到v里面

func (*Vec[T]) Cap

func (v *Vec[T]) Cap() int

cap

func (*Vec[T]) Clear

func (v *Vec[T]) Clear()

清空vec里面的所有值 TODO 需要看下效率. 如果效率不行,使用reflect.SliceHeader, 强转, 然后挨个置空

func (*Vec[T]) Clone

func (v *Vec[T]) Clone() *Vec[T]

深度拷贝一份

func (*Vec[T]) DedupFunc

func (v *Vec[T]) DedupFunc(cmp func(a, b T) bool) *Vec[T]

删除连续重复值 TODO 优化. 寻找更优做法

func (*Vec[T]) Delete

func (v *Vec[T]) Delete(i, j int) *Vec[T]

删除指定范围内的元素

func (*Vec[T]) ExtendWith

func (v *Vec[T]) ExtendWith(newLen int, value T) *Vec[T]

在vec后面追加newLen 长度的value

func (*Vec[T]) Filter

func (v *Vec[T]) Filter(filter func(e T) bool) *Vec[T]

原地操作, 回调函数返回true的元素保留

func (*Vec[T]) First

func (v *Vec[T]) First() (n T, ok bool)

返回第1个元素

func (*Vec[T]) Get

func (v *Vec[T]) Get(index int) (e T)

获取指定索引的值

func (*Vec[T]) GetPtr

func (v *Vec[T]) GetPtr(index int) (e *T)

获取指定索引的指针

func (*Vec[T]) Insert

func (v *Vec[T]) Insert(i int, es ...T) *Vec[T]

往指定位置插入元素, 后面的元素往右移动 i是位置, es可以是单个值和多个值

func (*Vec[T]) IsEmpty

func (v *Vec[T]) IsEmpty() bool

如果为空

func (*Vec[T]) Last

func (v *Vec[T]) Last() (n T, ok bool)

返回最后一个元素

func (*Vec[T]) Len

func (v *Vec[T]) Len() int

len

func (*Vec[T]) Map

func (v *Vec[T]) Map(m func(e T) T) *Vec[T]

原地操作, 回调函数会返回的元素值

func (*Vec[T]) Pop

func (v *Vec[T]) Pop() (e T, ok bool)

从尾巴弹出

func (*Vec[T]) PopFront

func (v *Vec[T]) PopFront() (e T, ok bool)

删除vec第一个元素, 并返回它, 和TakeFirst是同义词的关系

func (*Vec[T]) Push

func (v *Vec[T]) Push(e ...T) *Vec[T]

从尾巴插入 支持插入一个值或者多个值

func (*Vec[T]) Range

func (v *Vec[T]) Range(callback func(index int, v T) bool) *Vec[T]

遍历, callback 返回false就停止遍历, 返回true继续遍历

func (*Vec[T]) Remove

func (v *Vec[T]) Remove(index int) *Vec[T]

删除指定索引的元素

func (*Vec[T]) Repeat

func (v *Vec[T]) Repeat(count int) *Vec[T]

用于写入重复的值, 返回新的内存块, 来创建新的vec

func (*Vec[T]) Reserve

func (v *Vec[T]) Reserve(additional int) *Vec[T]

提前在现有基础上再额外申请 additional 长度空间 可以避免频繁的重新分配 如果容量已经满足, 则什么事也不做

func (*Vec[T]) ReserveExact

func (v *Vec[T]) ReserveExact(additional int) *Vec[T]

如果容量已经满足, 则什么事也不做 保留最小容量, 提前在现有基础上再额外申请 additional 长度空间

func (*Vec[T]) Resize

func (v *Vec[T]) Resize(newLen int, value T) *Vec[T]

调整vec的大小, 使用len等于newLen 如果newLen > len, 差值部分会填充value 如果newLen < len, 多余的部分会被截断

func (*Vec[T]) Retain

func (v *Vec[T]) Retain(filter func(e T) bool) *Vec[T]

Retain 是Filter函数的同义词

func (*Vec[T]) Rev

func (v *Vec[T]) Rev() *Vec[T]

反转

func (*Vec[T]) RotateLeft

func (v *Vec[T]) RotateLeft(n int) *Vec[T]

原地旋转vec, 向左边旋转

func (*Vec[T]) RotateRight

func (v *Vec[T]) RotateRight(n int) *Vec[T]

原地旋转vec, 向右边旋转

func (*Vec[T]) SearchFunc

func (v *Vec[T]) SearchFunc(f func(T) bool) int

二分搜索

func (*Vec[T]) Set

func (v *Vec[T]) Set(index int, value T) *Vec[T]

设置指定索引的值

func (*Vec[T]) SetLen

func (v *Vec[T]) SetLen(newLen int)

设置新长度

func (*Vec[T]) ShrinkTo

func (v *Vec[T]) ShrinkTo(minCapacity int) *Vec[T]

向下收缩vec的容器, 会重新分配底层的slice

func (*Vec[T]) ShrinkToFit

func (v *Vec[T]) ShrinkToFit() *Vec[T]

向下收缩vec的容器

func (*Vec[T]) SplitOff

func (v *Vec[T]) SplitOff(at int) (new *Vec[T])

在给定索引处将vec拆分为两个 返回一个新的vec, 范围是[at, len), 这里需要注意 原始的vec的范围是[0, at), 不改变原先的容量

func (*Vec[T]) SwapRemove

func (v *Vec[T]) SwapRemove(index int) (rv T)

删除指定索引的元素, 空缺的位置, 使用最后一个元素替换上去

func (*Vec[T]) TakeFirst

func (v *Vec[T]) TakeFirst() (n T, ok bool)

删除vec第一个元素, 并返回它

func (*Vec[T]) ToSlice

func (v *Vec[T]) ToSlice() []T

返回slice底层的slice

func (*Vec[T]) Truncate

func (v *Vec[T]) Truncate(newLen int)

修改vec可访问的容量, 但是不会修改底层的slice, 只是修改slice的len

func (*Vec[T]) TryGet added in v0.1.1

func (v *Vec[T]) TryGet(index int) (e T, ok bool)

获取指定索引的值, 如果索引不合法会返回错误

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL