ecodeclub / ekit

支持泛型的工具库

Home Page:https://doc.meoying.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

slice: FilterDelete

flycash opened this issue · comments

仅限中文

使用场景

近期我遇到了一个新的场景,即在 slice 中删除某些符合条件的元素,那么大体上来说,我需要方法:

func FilterDelete[Src any](src []Src, m func(idx int, src Src) bool) []Src {}

这个实现如果不考虑性能的话倒是蛮简单的,但是如果考虑性能的话,我希望能够做到:不会产生复制,只会把被删除元素之后的元素往前挪。

那么这里会有另外一个问题,就是如果我删除了多个元素,那么我希望对于一个没被删除的元素来说,只会被移动一次。