[转]cocos2d-x中的CCArray

转载 2014年04月29日 13:36:26

最近有用到CCArray,看到个不错的文章,就转载一下,一方便日后查看:

原文地址:http://blog.csdn.net/jnanxu/article/details/14124367

先来认识下CCArray的属性:

  1. /** 创建一个数组 */  
  2. static CCArray* create();  
  3. /** 通过一些对象创建一个数组 */  
  4. static CCArray* create(CCObject* pObject, ...);  
  5. /** 创建一个数组,并将对象放进去 */  
  6. static CCArray* createWithObject(CCObject* pObject);  
  7. /** 创建一个数组,设定估计容量 */  
  8. static CCArray* createWithCapacity(unsigned int capacity);  
  9. /** 同一个一个数组创建一个数组 */  
  10. static CCArray* createWithArray(CCArray* otherArray);  
  11. /** 
  12.  @brief   通过文件导入一个数组 
  13.  @param   pFileName  一个*.plist格式的文件 
  14.  @return  返回CCArray数组指针 
  15.  */  
  16. static CCArray* createWithContentsOfFile(const char* pFileName);  
  17.   
  18. /* 
  19.  @brief 同上, 但是不会调用autorelease, 所以调用之后需要执行release(). 
  20.  */  
  21. static CCArray* createWithContentsOfFileThreadSafe(const char* pFileName);  
  22.   
  23. /** 初始化数组 */  
  24. bool init();  
  25. /** 通过一个对象初始化数组 */  
  26. bool initWithObject(CCObject* pObject);  
  27. /** 通过一些对象初始化数组 */  
  28. bool initWithObjects(CCObject* pObject, ...);  
  29. /** 初始化数组,设定估计容量 */  
  30. bool initWithCapacity(unsigned int capacity);  
  31. /** 通过一个数组初始化数组 */  
  32. bool initWithArray(CCArray* otherArray);  
  33.   
  34. // 查询数组函数  
  35.   
  36. /** 返回数组元素的数量 */  
  37. unsigned int count() const;  
  38. /** 返回数组的估计容量 */  
  39. unsigned int capacity() const;  
  40. /** 通过对象去获得这个对象在数组中的下标,如果数组中没有这个对象会返回UINT_MAX */  
  41. unsigned int indexOfObject(CCObject* object) const;  
  42. /** 通过一个正确的下标去获得一个元素 */  
  43. CCObject* objectAtIndex(unsigned int index);  
  44. /** 返回最后一个元素 */  
  45. CCObject* lastObject();  
  46. /** 返回一个随机元素 */  
  47. CCObject* randomObject();  
  48. /** 判断数组是否包含该对象 */  
  49. bool containsObject(CCObject* object) const;  
  50. /** 从 1.1 之后,两个数组进行对比 */  
  51. bool isEqualToArray(CCArray* pOtherArray);  
  52.   
  53. // 添加函数  
  54.   
  55. /** 添加一个对象 */  
  56. void addObject(CCObject* object);  
  57. /** 添加数组所有元素 */  
  58. void addObjectsFromArray(CCArray* otherArray);  
  59. /** 插入一个对象到一个正确的下标位置 */  
  60. void insertObject(CCObject* object, unsigned int index);  
  61.   
  62. // 删除函数  
  63.   
  64. /** 删除最后一个元素 */  
  65. void removeLastObject(bool bReleaseObj = true);  
  66. /** 删掉数组中形参的元素 */  
  67. void removeObject(CCObject* object, bool bReleaseObj = true);  
  68. /** 通过一个正确的下标去删除元素 */  
  69. void removeObjectAtIndex(unsigned int index, bool bReleaseObj = true);  
  70. /** 通过一个数组去删除元素 */  
  71. void removeObjectsInArray(CCArray* otherArray);  
  72. /** 删除所有元素 */  
  73. void removeAllObjects();  
  74. /** 通过一个快速方式去删除元素 */  
  75. //快速方式就是:删除这个元素之后,将最后一个元素填充到删除位置。这样会打乱顺序,慎用  
  76. void fastRemoveObject(CCObject* object);  
  77. /** 通过一个快速方式去删除下标位置的元素 */  
  78. void fastRemoveObjectAtIndex(unsigned int index);  
  79.   
  80. //  重新安排内容  
  81.   
  82. /** 交换元素 */  
  83. void exchangeObject(CCObject* object1, CCObject* object2);  
  84. /** 交换制定的两下标的元素 */  
  85. void exchangeObjectAtIndex(unsigned int index1, unsigned int index2);  
  86.   
  87. /** 用一个对象去替换指定下标的元素 */  
  88. void replaceObjectAtIndex(unsigned int uIndex, CCObject* pObject, bool bReleaseObject = true);  
  89.   
  90. /** 翻转数组 */  
  91. void reverseObjects();  
  92. /* 缩小数组,让数组占用的内存符合元素的数量 */  
  93. void reduceMemoryFootprint();  


下面来介绍CCArrary几个可以用来偷懒的预编译:

  1. #define CCARRAY_FOREACH(__array__, __object__)  //遍历所有元素,后面会举例  
  2. #define CCARRAY_FOREACH_REVERSE(__array__, __object__)     //反序遍历元素  
  3. #define CCARRAY_VERIFY_TYPE(__array__, __type__)   //判断数组元素是否属于某类对象  
  4. #define arrayMakeObjectsPerformSelector(pArray, func, elementType)//让数组中所有元素去执行某一个函数  
  5. #define arrayMakeObjectsPerformSelectorWithObject(pArray, func, pObject, elementType)//让数组中所有元素去执行某一个函数 ,带参数  

举例:

  1. CCArray* arr = CCArray::create();  
  2.   
  3. CCObject* pNode;  
  4. CCARRAY_FOREACH(arr,pNode)  
  5. {  
  6.     pNode->retainCount();  
  7.     //遍历arr数组,让每一个元素执行retainCount()函数  
  8. }  

注意,不能通过CCARRAY_FOREACH去遍历删除元素,会删不干净。

原因:http://blog.csdn.net/lyh66/article/details/9613055

但是可以通过CCARRAY_FOREACH_REVERSE去遍历删除

相关文章推荐

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

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

cocos2d-x CCArray用法 遍历和删除元素

原文地址 http://blog.justbilt.com/25/ 一.基本用法 1.声明初始化变量 C++ coco...

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

cocos2d-x的CCArray是数据结构类,对游戏存储数组型数据做了优化。它模拟了苹果NSMutableArray的功能,但是执行效率更高。 1. API (1)创建 //创建一个数组array ...

cocos2d-x节点(CCArray.h)API

本文来自http://blog.csdn.net/runaying ,引用必须注明出处! cocos2d-x节点(CCArray.h)API 温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的...

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

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

cocos2d-x CCArray用法 遍历和删除元素

本文为 justbilt 原创,转载请标明原作者及原文出处,以示尊重! 作者:justbilt 原文:http://blog.justbilt.com/25/   一.基本用法 1.声明...
  • kenkao
  • kenkao
  • 2013-08-27 09:56
  • 11971

cocos2d-x 之 CCArray 源码分析

cocos2d-x 自己实现了一个数组CCArray ,下面我们来分析一下CCArray的源码 CCArray继承CCObject,所以,CCArray也具有引用计数功能和内存自动管理功能。 数组...

cocos2d-x中CCArray里面CCARRAY_FOREACH的用法

CCArray这个是在cocos2d-x当中很常用的,其基类是CCObject,主要是作为存储CCObject指针的容器来使用的。最常用的地方是存储CCNode及其子类的children。CCNode...

Cocos2d-x调用Java (转)

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自【黑米GameDev街区】原文链接: http://www.himigame.com/android-game/725.ht...

cocos2d-x CCTableView动态插入删除元素bug修正及动画表现 (转)

转自 ;http://blog.csdn.net/langresser_king/article/details/9167577       cocos2d-x CCTableView动态的插入删除...
  • hhy018
  • hhy018
  • 2013-11-12 15:01
  • 1214
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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