数据结构和算法

当前位置:首页>技术博客>数据结构和算法
全部 15 TFrame框架 2 游戏渲染 0 编辑器扩展 0 性能优化 3 SDK 4 数据结构和算法 1 杂项 5

Unity中常用的STL结构

时间:2021-07-19   访问量:1567

Unity中常用的是字典、列表、队列、栈Stack


字典Dictionary

内部采用哈希表实现,key不能为null。优势:增、删、查、改,但是对于排序却不方便。


增:如果Count小于容量,则O(1);否则等于容量大小时,内部会自动重新分配数组,并将数据复制到新数组中,再添加新的数据,为O(n)操作,n为Count

删:Remove函数,不会引发异常,为O(1)操作。

查:接近O(1)操作,具体速度决定于指定类型的哈希算法质量。

Clear函数:将Count设置为0,释放集合中对对象的引用,容量不变,为O(n)操作。

判断是否存在某个key:ContainsKey函数,在新增数据前需要判断是否存在这个key,为O(1)操作。

判断是否存在某个Value:ContainsValue函数,属于线性搜索,为O(n)操作。


列表List

增删查改没有字典好,优势:方便排序


如果存放的是同种类型的数据,使用泛型List,常用开发中一般不会存储不同类型的数据。

与ArrayList相比,大多数情况下性能更好且安全。


增:Add函数,将数据添加到结尾处。如果Count小于容量,则O(1);否则等于容量大小时,内部会自动重新分配数组,并将数据复制到新数组中,再添加新的数据,为O(n)操作;

AddRange函数,将多个数据添加到结尾处。如果添加数据个数加上已有数据个数小于容量,为O(添加的数据个数)操作;否则,内部会自动重新分配数组,并将数据复制到新数组中,再添加新的数据,为O(已有数据个数+添加的数据个数)操作。

Insert函数,为O(n)操作,如果插入的位置等于Count,但是小于容量,则直接放到尾部。如果Count大于容量,会重新分配内存。

删:Remove函数,为O(n)操作。

RemoveAt函数,为O(n)操作,如果移除的是中间的元素,还会将后面的元素向前移动。

查:Find函数,属于线性搜索,为O(n)操作。

Clear函数:将Count设置为0,释放集合中对对象的引用,容量不变,为O(n)操作。

判断是否存在某个Value:Contains函数,属于线性搜索,为O(n)操作。


排序:Sort函数,为O(nlogn)操作。


队列Queue

循环数组,先进先出,一般用于对顺序处理某些数据时使用。


栈Stack

一般用于对象池,只关心放进取出,不关心具体取出哪一个数据。

上一篇:没有了!

下一篇:没有了!

发表评论:

评论记录:

未查询到任何数据!