经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 游戏设计 » 查看文章
Unity C#笔记 容器类
来源:cnblogs  作者:KillerAery  时间:2019/3/25 9:00:22  对本文有异议

记录一下Unity C#常用的容器,方便写脚本时忘了容器类来查下 (- -||)


动态数组 List<T>

  • using System.Collections.Generic; //泛型容器的命名空间

  • 类似C++的vector<T>

有另一个非常相似的非泛型容器:ArrayList。ArrayList可以插入不同的值类型,在数据检索及存储时存在装箱与拆箱操作,容易带来性能消耗。
而List<T>则可以避免了装箱与拆箱动作的性能耗费,而且类型更安全。


双向链表 LinkedList<T>

  • using System.Collections.Generic; //泛型容器的命名空间

  • 类似C++的list<T>

  • 额外的,LinkedListNode<T> 是双向链表的节点类型


队列 Queue<T>

  • using System.Collections.Generic; //泛型容器的命名空间

  • 类似C++的queue<T>

  • Queue<T>的底层是动态数组实现的队列


栈 Stack<T>

  • using System.Collections.Generic; //泛型容器的命名空间

  • 类似C++的stack<T>

  • Stack<T>的底层是动态数组实现的栈


查找二叉树 SortedDictionary<K,V>

  • using System.Collections.Generic; //泛型容器的命名空间

  • 类似C++的map<K,V>

有另一个也非常相似功能的SortedList<K,V>,但是它的实现不是二叉树,而是每次插入都要排序的数组(真如其名),
所以插入删除速度都是O(n),而且其用处比较少(例如要求O(1)速度找出第几大),就不放出来了。


哈希表 HashSet<K> & Dictionary<K,V>

  • using System.Collections.Generic; //泛型容器的命名空间

  • 类似C++的unorderd_set<K>和unorderd_map<K,V>

  • 额外的,KeyValuePair<K,V> 是键/值对结构,用于辅助Dictionary<K,V>结构。


位数组 BitArray

  • using System.Collections; //非泛型容器的命名空间

  • 类似C++的bitset


原生数组 NativeArray<T>

  • using Unity.Collections; //NativeArray的命名空间

  • NativeArray<T>只能容纳值对象。

  • 在创建的时候除了指定length外,还需要指定allocator模式:Temp(临时),TempJob(Job内临时),Persistent(持久)

  1. \\示例,容量233,临时内存
  2. NativeArray<T> array = new NativeArray<T>(233,Allocator.Temp);

它本质和普通的struct数组似乎没什么区别,内存连续使cpu更容易命中缓存,它可能只是简单的封装一下数组。

而且由于它的实现是隐藏的,Unity官方文档说用它性能准不差。
所以只能推测,它所指定的allocator模式可能是类似Temp对应栈内存分配,Persistent对应堆内存分配的方式来加快速度。

原文链接:http://www.cnblogs.com/KillerAery/p/10586659.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号