第5章 Cocos2d-x中的数据结构
我在大学时代,计算机老师告诉我“程序=数据结构+算法”。我记得学过很多数据结构的算法,包括数组(Array)、堆栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)和哈希表(Hash)等结构。
在Cocos2d-x中使用的数据结构相关类有两个来源:C++标准数据结构类和Cocos2d-x中定义数据结构类。在Cocos2d-x 3.x之前,Cocos2d-x定义的数据结构类是模仿Objective-C设计的,这是因为Cocos2d-x源自Cocos2d-iphone。Cocos2d-x 3.x目前仍然保留了这些数据结构类,此外,Cocos2d-x 3.x又添加了一些新的数据结构类,所以Cocos2d-x 3.x中的数据结构类特别多。
虽然有很多数据结构类,但归纳总结后可以划分为两大数据结构:列表和字典。
●列表结构包括:__Array、Vector<T>和ValueVector。
●字典结构包括:__Dictionary、Map<K,V>、ValueMap和ValueMapIntKey。
__Array和__Dictionary的设计是模仿Objective-C中的NSArray和NSDictionary类,它们都继承于Ref类,Ref类设计是模仿Objective-C中的NSObject,NSObject是Objective-C所有类的根类。
Vector<T>和Map<K,V>也继承于Ref类,它们是Cocos2d-x 3.x推荐使用的数据结构,它们类似于C++的标准数据结构类std::vector<T>和std::unordered_map<K,V>。
还有Cocos2d-x 3.x提供了ValueVector、ValueMap和ValueMapIntKey类型,它们只能容纳Value类型的C++的标准数据结构类。
本章介绍__Array、Vector<T>、__Dictionary、Map<K,V>、ValueVector、ValueMap和ValueMapIntKey这7个数据结构类。