【爱上cocos2d-x之十二】数据结构CCArray

原创 2014年03月25日 17:22:00

cocos2d-x的CCArray是数据结构类,对游戏存储数组型数据做了优化。它模拟了苹果NSMutableArray的功能,但是执行效率更高。


1. API


(1)创建

//创建一个数组array
static CCArray* create();
//使用一些对象创建数组
static CCArray* create(CCObject* pObject,...);
//使用一个对象创建数组
static CCArray* createWithObject(CCObject* pObject);
//创建一个指定大小的数组
static CCArray* createWithCapacity(unsigned int capacity);
//使用一个现有的CCArray数组来新建一个数组
static CCArray* createWithArray(CCArray* otherArray);


(2)插入

//插入一个对象
void addObject(CCObject* object);
//插入一个已经存在的数组的全部对象
void addObjectFromArray(CCArray* otherArray);
//在一个确定的索引位置插入一个对象
void insertObject(CCObject* object,unsigned int index);

(3)删除

//移除最后的一个对象
void removeLastObject(bool bReleaseObj=true);
//移除一个确定的对象
void removeObject(CCObject* object, bool bReleaseObj=true);
//移除一个确定索引位置的元素
void removeObjectAtIndex(unsigned int index, bool bReleaseObj=true);
//移除数组中的全部元素
void removeObjectsInArray(CCArray* otherArray);
//移除所有对象
void removeAllObjects();
//快速移除一个对象
void fastRemoveObject(CCObject* object);
//快速移除一个确定索引位置的对象
void fastRemoveObjectAtIndex(unsigned int index);

备注:大家可能有个疑惑,remove和fastRemove有什么区别呢?

两者的区别,就在于删除元素之后,是否把数组之后的元素向前移动覆盖掉之前位置的元素。remove是从CCArray中完全的移除,fastRemove只是将CCArray中对应的对象释放掉了,没改变整个CCArray结构。所以remove后,数组有向前覆盖;fastRemove后,数组没有向前覆盖。


2. 使用注意事项


CCArray一般不会被add到其他类中,所以它的引用计数是1,并且设置为autorelease对象。创建CCArray对象并且retain,然后在这个类中的析构函数中调用release方法来释放内存。如果CCObject对象添加到CCArray中,那么CCObject对象的引用计数将会加1.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【玩转cocos2d-x之二十五】数据结构CCArray

CCArray是从cocos2d中移植过来的,类似于Apple的NSMutableArray,但是比NSMutableArray更为的好用。要注意的是虽然CCArray和CCDictionary可以管...

cocos2d-x 中的数据结构集合(容器)(CCArray,Map,Vector)使用笔记

第1部分、CCArray cocos2d::CCArray(在3.0中已经过时,将被vector替代)是一个可变数组集合容器,放在其中的元素是有序的,并且可以重复,可以通过索引来获得元素,可以对容器内...

【爱上cocos2d-x之十三】数据结构CCString

CCString继承于CCObject,CCObject这个基类主要是为了自动内存管理而创建的。 常用方法 1. 创建 /**使用std::string创建一个字符串,你也可以传递一个c字符串指针, ...

Cocos2d-x 脚本语言Lua基本数据结构-表(table)

Cocos2d-x 脚本语言Lua基本数据结构-表(table) table是Lua中唯一的数据结构,其他语言所提供的数据结构,如:arrays、records、lists、queues、sets等,...

Cocos2d-x 内存管理与数据结构

Cocos2d-x 内存管理与数据结构 引用计数 Cocos采用的是引用计数的方式管理内存,Cocos会记录堆上每个对象被引用的次数,当引用次数为0时则自动释放内存。   Ref类 为了实...

Cocos2d-x 3.0 数据结构

基础数据结构在游戏开发中至关重要,可能每一帧某个逻辑需要从一个数组中查找,删除,添加数据,或者从一个字典中快速存/取一个值,游戏引擎本身也要对UI树进行遍历,排序等操作。基础数据的操作速度影响着程序的...
  • vinrex
  • vinrex
  • 2014-10-16 10:40
  • 1089

【玩转cocos2d-x之二十六】数据结构CCDictionary

CCDictionary在cocos2d-x中被大量的应用,比如CCTexureCache,CCSpriteFramCache等等。 1.实现原理 1.1.uthash CCDiction...

【amazing cocos2d-x 3.0之七】数据结构Vector

v3.0 beta

22.cocos2d-x数据结构

1.Vector测试: CCLOG("Vector Test"); //一.Vector基本使用 auto sp0 = Spri...

【amazing cocos2d-x 3.0之八】数据结构Map

1. 简介 值得注意的
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)